【问题标题】:How can I get iframe element? [duplicate]如何获取 iframe 元素? [复制]
【发布时间】: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')的值是否有价值。

标签: javascript jquery html iframe parent-child


【解决方案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); });

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 2016-09-02
    • 1970-01-01
    • 2011-12-11
    • 2013-01-27
    • 2012-01-26
    • 2010-11-08
    相关资源
    最近更新 更多