3

我有一些像这样的简单 JavaScript 代码:

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

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

4

2 回答 2

8

这里的问题是,您很可能在新窗口有机会完成加载之前尝试访问新窗口的 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>
于 2012-05-13T04:52:51.283 回答
1

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

于 2014-01-02T04:00:23.920 回答