2013年9月19日木曜日

ie上でjQueryを使ったとき要素を作れる? 作れない?

詳しい条件とかは忘れたけど、ieのなんかのバージョンでjQueryを使ったとき $("<p>") のようなコードで要素を作れないと聞いたので確かめてみました。 個人のページのネタなのでie10だけチェック。 試したコードはこんな感じ。

<html>
    <head>
        <title>test</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript">
<!--
$(
    function()
    {
        $("body").append(
            $("<p>").text("test")
        );
    }
);
//-->
        </script>
    </head>
    <body>
    </body>
</html>

jQueryのバージョンが上がったから大丈夫なのかieのバージョンが10だから大丈夫なのかは分からないけど、普通に動きますね。

ダメだってのは何のページで聞いた情報でしたっけ? と思ってそれっぽいキーワードで検索してみるとまぁ出るは出るは、ieは嫌われるべくして嫌われてるんだなぁ。

とりあえず、旧バージョンのieでも動くコードにするには、 $("<p>") のように書かずに $(document.createElement("a")) のように書かなければならないよう(未検証)です。

そういう関数を作っておいた方がいいかな? (もちろん未検証)

function $C(element_name)
{
    return $(document.createElement(element_name) );
}

使うときはこんな感じで。

$("body").append(
    $C("p").text("test")  ←  $("<p>").text("test")
);

え~と...

ie6の対応とか、やめちゃいましょう。 大手サイトも対応してないの結構あるし。

もちろん、公共のサイト作っている人は対応しなきゃダメだし、動作チェックも必要ですよ? タイヘンダナァ~。