为什么我不能在firefox中设置iframe主体的innerHtml?

时间:2013-02-23 02:55:56

标签: firefox iframe internals

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

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

来执行此操作

See this example on jsbin

在chrome中,两者都工作正常。然而,在Firefox中,顶部闪烁进出。 (在IE10中,顶部的一个抛出错误,正文为null但我并不担心IE)。

两个问题:

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

1 个答案:

答案 0 :(得分:3)

在Firefox中,当您创建iframe时,它会开始加载about:blank。然后你的脚本与那个负载竞争:你修改DOM,然后关于:空白加载并消除你的更改。

“规范”到目前为止并未定义此行为(与大多数文档加载一样),尽管在webapps中有一个提案可以这样做。该提议将是:在这种情况下应该没有关于:空白加载,而是即使没有发生加载也会被解雇(因为网站依赖于没有src触发加载事件的帧)。