如何获取 iframe 元素? [复制]

Posted

技术标签:

【中文标题】如何获取 iframe 元素? [复制]【英文标题】:How can I get iframe element? [duplicate] 【发布时间】:2018-01-13 07:50:06 【问题描述】:

这是main.html

<body>
    <iframe id="frame" src="frame.html"></iframe>
    <script type="text/javascript">
    document.getElementById('frame').contentWindow.document.getElementById('test').innerHtml = 'abcdefgh';
    </script>     
</body>

这是frame.html

<body>
    <p id="test">0123456798</p>
    <script type="text/javascript"></script>
</body>

错误:未捕获的类型错误:无法将属性“innerHTML”设置为 null

为什么不起作用,我该如何更改id="test" 文字

【问题讨论】:

我认为你不需要使用contentWindow.document。代码应该像document.getElementById('frame').getElementById('test').innerHtml TypeError: document.getElementById(...).getElementById is not a function at 您应该在控制台中检查document.getElementById('frame')的值是否有价值。 看看this related question 【参考方案1】:

使用setTimeout() 延迟您的脚本。 iframe 需要时间来加载。

<iframe id="frame" src="frame.html"></iframe>
<script type="text/javascript">
setTimeout(function()
  document.getElementById('frame').contentWindow.document.getElementById('test').innerHTML = 'abcdefgh';
,800);
</script> 

注意innerHTML()上的大写字母。

【讨论】:

嗯,得到相同的结果 尝试更长的延迟...也许 800 毫秒是不够的。这取决于 iframe 内容。 我也试过延迟10秒^~^ 它有效here。我为您设置了 3000 毫秒的延迟,以便您有时间注意到 HTML 更改...但它适用于 800。 是的,谢谢,终于成功了。 bcs 我忘记发送文件到我的服务器,我在我的电脑上测试它。【参考方案2】:

您好,您有一个解决方案

设置超时(函数() var iframe = document.getElementById('frame'); 控制台.log(iframe); );

希望对你有帮助

【讨论】:

以上是关于如何获取 iframe 元素? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

iframe子页怎么获取父页的window对象

如何获取iframe外面的元素

如何获取页面iframe元素内容的高、宽?

如何使用 jquery 从 iframe 获取内容? [复制]

关于如何获取iframe中的元素

如何获取加载的 iframe 标题元素?