【问题标题】:Jquery: how to check if a newly opened window has been fully loaded? / window loads an external page (like www.yahoo.com)Jquery:如何检查新打开的窗口是否已完全加载? /window 加载外部页面(如 www.yahoo.com)
【发布时间】:2011-11-04 19:15:07
【问题描述】:

以下不起作用,为什么?

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

虽然 MyWindow 是一个 Window 引用,但不会检查它是否已完全加载。我认为$(window).load(...) 会在这里工作,因为“window”被“MyWindow”取代。

以下作品:

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

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

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

【问题讨论】:

  • 我认为这会有所帮助:stackoverflow.com/questions/4842432/…
  • $(win.document).ready(function() { $(win.document).contents().find("...").doStuff(); }); ?这仅在文档准备好时执行......这不是我需要的......我宁愿在窗口完全加载时收到通知! DOM 准备好后就不行了.. 不过还是谢谢..
  • 我刚刚对此进行了测试,它似乎有效。请参阅我的答案中的测试脚本。

标签: jquery load notifications window


【解决方案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 sleep...”出现在子窗口中之前,父窗口中的 alert() 会触发。

【讨论】:

  • 我请再重复一遍:我需要在加载窗口后发出警报('window is open'),而不是在窗口文档准备好时...我知道你的脚本有效,因为我已经实现了。但是我需要在加载窗口之后...这就是为什么我在 $(window).load() 函数上方使用我的代码,并带有“window”代表新打开的窗口的引用。跨度>
【解决方案2】:
$(document).ready(function() {
   //perform tasks, DOM is loaded
});

希望这会有所帮助。

【讨论】:

  • 我需要在窗口完全加载时得到通知:一种$(reference_to_window).load(....){}!!! DOM 准备好后就不会了 ..
  • 整个窗口还是部分窗口?
  • 整个部分,我尝试了 $(myWindow).load(function(){ });但它确实有效......有什么想法吗?
【解决方案3】:

我看到这个问题有点老了。

然而,亚瑟说,

对于 targetUrlVar 作为内部资源(例如属于我的域的页面)它可以工作.. 但是只要我想使用 .load() 或 myWindow.onload() 并且 targetUrlVar 作为外部页面(例如作为 www.yahoo.com 或 www.google.com ),它不再起作用了...没有显示警报..

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多