如何获取 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 元素? [复制]的主要内容,如果未能解决你的问题,请参考以下文章