iframe contentWindow奇怪的行为(有反应)

时间:2018-03-28 00:06:45

标签: javascript reactjs google-chrome iframe

现在陷入某种异常现象,今天无法解决这个问题。我在本地使用React和create-react-app并在Chrome中测试(Firefox同样的东西)。我有一个嵌套在组件深处的iframe,并尝试在onLoad发生后设置高度。

我可以解决iframe问题,

console.log( iframe.contentWindow )

我可以看到整个对象,可以搜索  文件 - >身体 - > scrollHeight属性。 (1044px)

然而,如果我尝试更深入地访问,我会得到空的HTML。例如

console.log( iframe.contentWindow.document )

会给我

<html>
    <head>
    </head>
    <body>
    </body>
</html>

它&#39;只是和空的HTML。如果我尝试查询scrollHeight,我会得到150px,这就是视口上iframe的可见部分。

我只是不知道如何记录contentWindow给我整个对象,但是如果我进一步记录文档它是空的html ..

编辑:如果有帮助的话,还可以在字符串中使用html加载带有srcdoc属性的iframe源。

Edit2:如果我从Chrome控制台查询iframe的文档,我会得到完整的正文,但不会出现代码。

谢谢!

1 个答案:

答案 0 :(得分:0)

这取决于什么浏览器。对不起,这不应该被标记为答案(但是),但我太新了评论。

请参阅一些示例,了解我如何将某些代码中的iFrame作为我需要跨平台工作的目标:

ifrm = document.getElementById('scriptContainer');

ifrm = ifrm.contentWindow || ifrm.contentDocument.document || ifrm.contentDocument;

然后尝试:

console.log(ifrm),您会看到类似的内容:

first console ouput

不完全是你想要的吗?

但是,不用担心,因为您的ifrm变量现在包含文档窗口对象,我们可以简单地说:

console.log(ifrm.document)

应该返回类似的内容:

enter image description here

希望这有帮助,让我更多地了解您的具体案例,我可能会进一步提供帮助。

编辑:要考虑的另一件事是确保在运行代码以遍历iframe时,它已经完全加载。