2009年8月28日

Javascriptで一苦労

せっかくアフィリエイト用に作ったJavascriptが、FireFoxでの実行は問題ないのに、IEで実行すると以下のエラーになる。
Web ページ エラーの詳細

ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
タイムスタンプ: Thu, 27 Aug 2009 11:54:13 UTC


メッセージ: HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)
ライン: 0
文字: 0
コード: 0
URI: http://www39.atwiki.jp/nekonoshin01/pages/96.html
Unable to modify the parent container element before the child element is closed」を直訳すると、「子エレメントがクローズされる前に親コンテナのエレメントを変更することは出来ない。」となる(のかな?)

いろいろ調べるに、ページが完全に表示しきる前に、以下のような操作をIEは許可しないのだそうだ。
document.getElementById('aaa').innerHTML = '<p>Hello world</p>';
じゃぁ、ページが完全に表示されてから、操作すれば良いんだろうと、さらにいろいろ調べるに、window.onloadを使えばよいらしいことを発見。そこで、自作関数のMyFunctionを以下のようにして呼び出すコードをHTML内に適当に埋めてみた。
<script type="text/javascript">
<!--
window.onload=MyFunction('myvaule');
-->
</script>
しかし、FireFoxでは動作したが、IEでは別の以下のエラーとなる。だめなのか。
Web ページ エラーの詳細

ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
タイムスタンプ: Thu, 27 Aug 2009 12:07:33 UTC


メッセージ: 実装されていません

ライン: 207
文字: 1
コード: 0
URI: http://www39.atwiki.jp/nekonoshin01/pages/96.html
試行錯誤のうえ、最初のwindow.onloadの部分を下記に変えることでFireFoxとIE7,IE8で動くことを確認できた。
<script type="text/javascript">
<!--
window.onload=function(){MyFunction('myvaule');}
-->
</script>
解決するのにまる5日もかかってしまった。15年ぶりのプログラミングは楽しくも大変だ。

0 件のコメント:

コメントを投稿