- # プログラミング全般 > JavaScript
IEのinnerHTMLにはscriptタグを含んではダメだって
お金 | 仕事 | 勉強 | プライベート | 健康 | 心
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般
あああ、疲れました・・・orz
個人的なことですが、結婚式の日にちが近づいてきました。準備もしなきゃいけないのですが、プログラムばかり書いている私に奥さんが切れ気味なのは・・・気のせいということにしておきます。(冗談です、笑)
javascriptで「document.getElementById」書きすぎたせいで手が痛いです。javascriptを勉強して書けるようになればなるほど、IEのDOM標準を無視した独自仕様が段々嫌になってくる。
FireFoxなら動くけどIEはダメというのが、けっこうあります。それとIEには、FireFoxのようなjavascriptの実行結果のエラーコンソロール機能ってついてないのでしょうか?FireFoxの真似するんなら、そこも真似すれば良いのに。
で・・・先日公開したアマちぇっき(※ 申し訳ありませんが、あまチェキはサービスを終了しました。)のAjax版を作りました。
アマゾンアソシエイト用のブログパーツを簡単作成できるようになっています。
まだ動作確認が不完全で、いくつかバグもありますけど、とりあえずオープン。
Ajax使ってるせいか、写真拡大のとこがウィンドウ幅を超えるバグがあるのだけど、これ今んとこ直せてません。ブログパーツのほうでは、多分ちゃんと動くと思いますけど。
あと、はまったのがIEの場合のinnerHTML。
document.getElementById('hoge').innerHTML = '<script type="text/javascript" src="hogefile"></script>';
って書くと、FireFoxでは普通に動くが、IEでは動かない仕様になっているらしい。動かないというか、IEの場合、innerHTMLにscriptを含む値を設定しようとすると空っぽになるようです。
tyoro.exe: innerHTMLでscriptタグを出力する話
innerHTMLでscriptする – Thousand Years
ブログパーツ作成部分で、ソースコードを生成するのに上記のように書こうとしたら動かず・・・。解決策もあるようですが今いちなので、innerHTMLにscriptタグを設定するのは使わないことにしました。
結局PHPでPOST情報を処理して、ソースコードを生成する方法にした。ほんとは、javascriptで書けるなら、そのほうがユーザーフレンドリーなのですけど。
Ajaxはとても面白く、勉強してる途中でJSONのことを知ってちょっと感動しました。JSON使えばjavascriptでのXML処理がめっちゃ楽になる。ブラウザ間の互換性を保つためのjavascriptライブラリも、色々便利なものがあるみたいです。
今回は勉強のためもあって、素のjavascriptで書きましたけど、getElementById書くの疲れたので、次回からライブラリを使うことにしよう。とりあえず、prototype.jsとjQueryをマスターする予定です。
- - 関連記事 -
- グローバル変数を上書きしてしまうJavaScriptコードのthisを確認する
- JavaScriptでnewを忘れるとグローバル変数を上書きしてしまう
- JavaScriptテンプレートエンジンを動かしてみる
- JavaScriptのテンプレートエンジンの仕組みを解読してみる
- JavaScriptとPHPの変数スコープの違い
- FizzBuzzをJavaScriptで書いてみた