2

javascripts document.write を使用してページに Iframe を追加しています。Iframe 内で呼び出される (別のドメインからの) ページは、

window.addEventListener('load', function() { 
    //do stuff here 
}

Chromeで動作します。Firefoxで動作します。オペラで動作します。

IE9 では動作しません。「オブジェクトにはプロパティまたはメソッド「addEventListener」がありません」という奇妙なメッセージが表示されます。どうやら IE9 が話しているウィンドウ オブジェクトのようです。

console.log(window)

私は得る

[object Window]

しかし、私が

console.log(window.addEventListener)

私は得る

undefined

ページを直接呼び出すと、スクリプトは正常に動作しますが、iframe では、addEventListener (およびおそらく他のものも) を知らないこの魔法のキャストされたウィンドウ オブジェクトを取得します。ここで一体何が起こっているのですか?

4

1 に答える 1

3

多くの試行錯誤の末、iframe を作成していたページが HTML を壊し (Doctype も title タグもなし)、IE9 を強制的に Quirks モードにすることがわかりました。読み込みページをクリーンアップすると、正常に動作します。

于 2013-08-16T12:48:47.227 に答える