(Firefox?)`console.log(iframe)`+ inspecting`contentWindow`与`console.log(iframe.contentWindow)`之间的区别` - 不同的输出

时间:2018-03-18 18:47:38

标签: javascript firefox iframe console.log

考虑如下HTML文档

<div id="foobar"></div>
<iframe id="content" src="https://example.com/someUri"></iframe>

进一步考虑如下的JavaScript

document.addEventListener( 'DOMContentLoaded', function ( event ) {
    var content = document.querySelector( '#content' );
    console.log( content );
    console.log( content.contentWindow );
} );

在检查content的第一个控制台输出时,元素的contentWindow属性将显示为基于iFrame {{1}中指定的相同URI的窗口元素}属性。但是第二个控制台输出显示了一个基于URI src的窗口元素。

如标题中所述,我使用的是FireFox(59.0.1 x64)。

我愿意接受,但我想知道为什么?

1 个答案:

答案 0 :(得分:1)

实际上这个问题是基于DOMContentLoaded不等待加载iFrame内容的事实。

为了使主文档完全加载,contentWindow的输出基于空白页。实际上,iFrame本身的输出在同一时刻的检查过程中会显示相同的结果。

<强>但是

控制台会在每次更改时立即更新iFrame的输出,但不适用于contentWindow属性的单个日志。虽然更新速度如此之快,但我不能简单地识别控制台中的变化,并且可能首先会出现问题,就像我一样。

修改(2018-03-20)

同时我发现,在加载src中传递的内容之前,iFrame首先包含一个虚拟对象。