如何查看子浏览器窗口是否已完成加载?

时间:2009-07-15 16:40:27

标签: javascript html

我在弹出新窗口的页面上有一个链接,有时第二个窗口需要很长时间才能加载。 我想禁用父窗口上的链接,直到子窗口完成加载。 我知道我可以让子窗口onload()来提醒父母,但是我不想弄乱孩子,所以我有一个小的javascript轮询子窗口,看它是否有任何数据,除了它不起作用。 我不能newwindow.document.getelementbyid因为我永远无法确定该页面上是否会有任何特定元素。 我只是想知道某个地方是否有它。

2 个答案:

答案 0 :(得分:3)

只需在子窗口的load事件中添加一个侦听器即可。这是一个非常基本的例子

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

onload = function()
{
  document.getElementById( 'test' ).onclick = function( event )
  {
    event.preventDefault();
    event.returnValue = false;
    var link = event.target || event.src;
    var childWin = window.open( link.href, 'child', 'width=400,height=300' );
    childWin.onload = function()
    {
      alert( 'child window loaded!' );
    }
  }
}

</script>
</head>
<body>

<a href="test2.html" id="test">test</a>

</body>
</html>

注意:我应该告诉您,这只适用于您在子项中加载的URL属于与父项相同的域。浏览器安全模型会阻止您这样做。

答案 1 :(得分:2)

你可以尝试获取body标签,并检查它是否有孩子。如果是,则页面加载或非常接近。足够接近IMO。

如果孩子的URL不是同一个域,则无法执行任何操作。这将是一个XSS漏洞。