2013-01-08 26 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

相关问题