Blogger 上で JavaScript - その 2 (onload) を書き終えてから、iframe の中の文書を書き換えたら、再び onload が呼ばれるかもしれないと、ふと気づいて、次の 3つのときにログを残して確認してみる。
- onload が呼ばれたすぐ後
- .open() の前
- .close() の後
※ 実際のコードは (") は " で (<) は < で (>) は >。
- onload this.onload_count = (typeof(this.onload_count)!='number')?3: this.onload_count-1; if (this.onload_count <= 0) { return; } var log = document.getElementById('browserbehavior1'); log.innerHTML = '<div>onload:' + this.contentWindow.location.href + '</div>\n' + log.innerHTML; d=this.contentWindow.document; log.innerHTML = '<div> .open();</div>\n' + log.innerHTML; d.open(); d.write('<p style="font-size:80%;font-family:verdana,sans-serif;">Browser Behavior 1st</p>'); d.close(); log.innerHTML = '<div> .close();</div>\n' + log.innerHTML;
結果 - Firefox 3.6.9 on Windows XP SP2
- onload:about:blank
- .open();
- .close();
となって、再び onload は呼び出されないもよう。
結果 - Internet Explorer 7 on Windows XP SP2
- onload:about:blank
- .open();
- onload:http://softie.blogspot.com/...
- .open();
- onload:http://softie.blogspot.com/...
- .open();
- .close();
- .close();
- .close();
のような順番でログに残っているので、おそらく .close(); を実行すると onload が再び呼ばれてループするもよう。
onload のはじめで、2回目以降は実行されない工夫が必要。
検証用コンテンツ
- iframe
- logs