2012-05-13 16 views
3

我有一些簡單的JavaScript代碼:如何在由JavaScript窗口對象打開的窗口中設置某個元素的innerHTML?

<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,但似乎沒有任何工作。有沒有人有什麼建議?

回答

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> 
0

只需要注意的......甚至固定它的時間你也可以有這個錯誤後,如果您在本地計算機上而不是在互聯網或發展本地服務器。我只是浪費了一個小時,試圖找出爲什麼它不起作用,然後將相同的代碼上傳到我的服務器,它工作正常。我使用的是兩年前在本地運行的代碼,但是在不同的瀏覽器中,更改了幾行代碼並且瀏覽器停止運行,直到在服務器上運行。希望這可以幫助某人。

相關問題