IE6 で異なる charset の JavaScript の読み込み方法
Posted by yoosee on Web at 2005-09-13 23:42 JST1 Amazon wishlist の公開 は IE6 だとエラーになってました
先日、Amazon の Wishlist を公開することを始めた。これは<script language="JavaScript" src="http://..." > </script>のようにして、src 側で document.write('....'); を出力する cgi を読み込んで表示するようにしたのだが、Firefox では動いていたものの、今日 IE6 で試してみたら表示時にエラーになってしまった。誰か教えてくれればいいのに(他力本願)。
他の部分で同様に document.write(); しているものは問題なく動いているようで、この Amazon wishlist の部分だけを削ってみるとエラーも消える。はて何が違うのだろうと見てみると、呼び出し元(この日記)ページが euc-jp なのに対して、この javascript は utf-8 出力なのが問題のようなのであった。試しに javascript を吐く cgi を euc-jp にしてみたらエラーが収まって正しく表示される。IE6 だと異なる文字コードの JavaScript を読み込むとエラーになることがあると言うことのようだ。ちなみに JavaScript 出力側は HTTP ヘッダできちんと
Content-Type: text/javascript; charset=utf-8と出力しているのは言うまでもない。
2 script 要素に charset 属性を指定する
しかしこれでは困るケースもあるだろうと Google で色々見てみたところ、どうやら script 要素に charset 属性を明示的に指定すれば解決するらしい。と言うことで<script language="JavaScript" charset="utf-8" src="http://..." > </script>のように書いたら IE6 でもとりあえず問題無く表示されるようだ。当面はこれで良しとしておく。そもそもこの日記自体を euc-jp で運用する必然性もそろそろ無くなってきてはいるんだけど。