Jquery:如何检查新打开的窗口是否已满载? / window加载外部页面(如www.yahoo.com)

时间:2011-08-26 19:41:34

标签: jquery load notifications window

以下不起作用,为什么?

var myWindow=null;
myWindow = window.open(targetUrlVar,"_blank","resizable=yes");
$(myWindow).load(function(){
    alert('hello');
});

虽然MyWindow是一个Window引用,但不会检查它是否已完全加载。我认为$(window).load(...)可以在这里用“窗口”替换为“MyWindow”。

以下作品:

$(myWindow).load(function(){
    alert('hello');
});

对于targetUrlVar是一个内部资源(就像属于我的域的页面),它的工作原理.. 但是,只要我想使用.load()myWindow.onload()并将targetUrlVar作为外部网页(例如www.yahoo.com或www.google.com),它就不会继续工作...... 没有显示警报..

我需要你的帮助...谢谢大家

3 个答案:

答案 0 :(得分:1)

如果要在子窗口打开时触发警报,而不管子窗口DOM的状态如何,那么这应该有效。我还提供了一种测试这种假设的方法。

使用以下内容创建测试PHP脚本(或类似的脚本语言):

<html>
<head><title>test</title></head>
<body>
    <?php sleep(5); // Sleep to delay DOM from loading ?>

    Done sleeping...
</body>
</html>

然后使用以下javascript调用此测试页作为您的子窗口:

win = window.open('test.php', 'test', 'width=300, height=400, x=800');
win.focus();
$(win.document).ready(function() {
    alert('Window is open');
});

您会注意到,在您看到子窗口中出现“Done sleeping ...”之前,父窗口中的alert()会触发。

答案 1 :(得分:0)

$(document).ready(function() {
   //perform tasks, DOM is loaded
});

希望这有帮助。

答案 2 :(得分:0)

我觉得这个问题有些陈旧。

然而,亚瑟说,

  

对于targetUrlVar是一个内部资源(就像属于我的域的页面)它可以工作..但是一旦我想使用.load()或myWindow.onload(),targetUrlVar是一个外部页面(如如www.yahoo.com或www.google.com),它不再起作用......没有显示警报..

我认为问题可能是由于targetUrlVar是外部的;可能会阻止警报以防止跨站点脚本(也称为XSS)。