用于检测页面是否已在Firefox中的另一个窗口中加载的Javascript

时间:2010-10-18 14:30:57

标签: javascript firefox tabs loading detect

我想知道什么是最好的方法来检测页面何时完成加载,其中有问题的页面位于不同的选项卡或窗口中,...以及要加载的页面可以是Web上的任何页面,不在我的控制之下。

我只使用Firefox,我不介意解决方案是否需要Firefox扩展程序或Grease Monkey脚本(我已经添加了配置/命令以允许访问来自不同域的页面)。

以下代码显示了一次尝试。它有时会检测初始页面何时加载,但是当我按“提交”将新页面重新加载到另一个窗口时,它不会检测到它。

感谢。

<html>
<head>
<script type="text/javascript">

    currentPageObj = window.open("http://www.bbc.co.uk", "currentPage");

    currentPageObj.addEventListener("load", function(){alert("loaded")}, false);

</script>
</head>
<body>

    <form action="http://www.example.com" target="currentPage">
         <input type="submit">
    </form>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

在另一个页面中只有一个onload事件处理程序,它调用父窗口(window.opener)中的方法来执行您想要的操作。例如在子页面中:

window.addEventListener('load', function () {
  if (window.opener && !window.opener.closed)  {
     window.opener.childLoaded();
  }
}, false);

让childLoad在父窗口中执行您想要的操作。 (注意:最好保留对要处理的窗口的引用,例如初始化var parentWindow = window;,因为当您在窗口之间调用时,这会让人感到困惑。)