2

假设您有一个 iframe,并且您正在使用 javascript 修改它的 contentDocument。

从理论上讲,您可以通过contentDocument.body.innerHTML直接设置或使用contentDocument.write()

在 jsbin 上查看此示例

在 chrome 中,两者都可以正常工作。然而,在 Firefox 中,顶部闪烁进出。(在 IE10 中,顶部会抛出一个错误,主体为空,但我不担心 IE)。

两个问题:

  • 为什么在Firefox中会发生这种情况?
  • 根据规范,哪种行为是“正确的”?
4

1 回答 1

3

在 Firefox 中,当您创建 iframe 时,它​​会开始加载about:blank. 然后,您的脚本会与该负载竞争:您修改 DOM,然后 about:blank 加载并清除您的更改。

到目前为止,“规范”并没有定义这里的行为(就像大多数文档加载一样),尽管 webapps 中有一个提案可以这样做。该建议是在这种情况下不应该有 about:blank 加载,而是应该触发一个虚假的加载事件,即使没有发生加载(因为网站依赖于没有 src 触发加载事件的帧)。

于 2013-02-23T05:56:14.733 回答