如何在由 JavaScript 窗口对象打开的窗口中设置某些元素的 innerHTML

How to set the innerHTML of some element in a window opened by a JavaScript window object?

本文关键字:窗口 设置 innerHTML 元素 JavaScript 对象      更新时间:2023-09-26

我有一些简单的JavaScript代码,如下所示:

<script type="text/javascript">
   function openWindow() {
     var mywindow = window.open("file.html");
     mywindow.document.getElementById("foo").innerHTML="Hey you!!";
   }
</script>

此函数使用 onclick 事件调用。 窗口打开正常,但元素的内部 HTML 不会更改。 这是我拥有的文件,所以我知道我没有被任何安全策略阻止,并且 id 为"foo"的元素肯定存在。 (这是一个 DIV)。 我尝试了.innerHTML的其他变体,如.src和.value,但似乎没有任何效果。 有人有什么建议吗?

这里的问题是,您很可能在窗口有机会完成加载之前尝试访问新窗口的 DOM。

请考虑以下事项:

<script type="text/javascript">
   function openWindow() {
     var mywindow = window.open("file.html");
     // register an onload event with the popup window so that we attempt to 
      // modify it's DOM only after it's onload event fires.
     mywindow.onload = function() {
         mywindow.document.getElementById("foo").innerHTML="Hey you!!";
     }
   }
</script>

只是注意...即使您修复了它的时间,如果您在本地机器上而不是在互联网或本地服务器上进行开发,您也可能遇到错误。 我只是浪费了一个小时试图弄清楚为什么它不起作用,然后将相同的代码上传到我的服务器,它工作正常。我使用的是 2 年前在本地运行的代码,但在不同的浏览器中,更改了几行和浏览器,直到在服务器上运行才停止工作。希望这对某人有所帮助。