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

spi*_*nt0 5 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>
Run Code Online (Sandbox Code Playgroud)

and*_*wmu 1

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

window.addEventListener('load', function () {
  if (window.opener && !window.opener.closed)  {
     window.opener.childLoaded();
  }
}, false);
Run Code Online (Sandbox Code Playgroud)

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