2013-01-08 54 views
2

使用javascript,我可以打開並關閉一個彈出窗口,如下所示。是否可以在打開的JavaScript窗口中訪問DOM?

var myWindow = window.open('http://example.org/'); 
// do things to window. 
myWindow.close(); 

如何在關閉它之前在彈出窗口中操作頁面的DOM元素?我試過

myWindow.onready = function() { 
    myWindow.document.getElementById('someElementID').style.color = '#f00'; 
} 

無濟於事。

+0

@KashifNaseem顯然,他是不是想從第二個訪問的第一個窗口,但在彈出的窗口中的元素。 – ATOzTOA

+0

窗口對象沒有'onready'方法。如果它是相同的域,則可以在彈出窗口中訪問DOM。 – jfriend00

+0

這兩個頁面是否在同一個域中? –

回答

3

沒有讓您知道該URL在彈出窗口中正確加載的事件。唯一可行的選擇是設置超時,然後訪問元素。

像這樣:

var myWindow = window.open('./t6.html'); 

setTimeout(check, 3000); 

console.log($('body', myWindow.document)); // This shows a blank "body" 

function check() { 
    console.log($('body', myWindow.document)); // This shows the actual elements in the document 
} 

myWindow.close(); 
+0

您確定document.getElementById在文檔甚至沒有加載時工作嗎? –

+0

你必須等待文檔被加載。而且,你必須是同一個域名。 – jfriend00

+0

那麼,這個呢? http://www.w3schools.com/js/tryit.asp?filename=try_win_focus – ATOzTOA

1

Here's a fiddle這表明它沒有你的準備好的處理程序工作。

var myWindow = window.open('http://example.org/'); 
alert(myWindow) 
// Alerts an HTMLDocument object 

就像在評論中提到@ jfriend00,有一個Window object沒有現成的事件處理程序。

+0

實際上,它不工作......只是該警報顯示HTMLDocument並不意味着它是一個活動窗口。 – ATOzTOA

相關問題