如何在一帧中获取javascript以等待页面加载到第二帧中

时间:2009-08-05 08:59:27

标签: javascript frame wait frameset

我在框架集中有两个框架 - frame[0]包含一个脚本,可以使用

将页面加载到frame[1]
top.frames[1].location.href = 'http://some_location.com/page.html';

然后在该页面上执行操作,例如在页面内搜索文本。在执行此操作之前,我需要脚本等到page.html加载到第二帧中,并且我无法在第二页中使用onload=...,因为我无法控制其来源。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:3)

使用FRAME元素的onload事件

编辑:

<frame onload = "if( top.frames[1].location.pathname == '/page.html' " ) alert( 'loaded' )";

或者如果您将不同的页面加载到同一帧,请使用:

<frame onload = "if( top.frames[1].location.pathname != 'about:blank' " ) alert( 'loaded' )";

<frame src = '/dummyInitial.html' onload = "if( top.frames[1].location.pathname != '/dummyInitial.html' " ) alert( 'loaded' )";

答案 1 :(得分:0)

如果您无法控制已加载页面的来源,更重要的是,如果它来自其他域,则只有一个答案:

你不能。

不可能在不同域之间进行帧间通信。并且您需要帧间通信,因为您需要在加载的页面中使用jquery的ready函数来确定是否加载了整个页面(

)。

答案 2 :(得分:0)

我做到了这一点,并且有效。

var idInterval;
function callPage()
{   top.main.document.location.href = somepage.aspx;
    document.getElementById('divLoading').style.visibility ="visible";
    idInterval = setInterval("validaFrameMain()",50);
}
//look if the frame page is complete load
function validaFrameMain()
{
  if (top.main.document.readyState != "complete")
  {document.getElementById('divLoading').style.visibility ="visible";}
  else
  { document.getElementById('divLoading').style.visibility ="hidden";;
    clearInterval(idInterval);
    idInterval = nothing;
  }
}