我在框架集中有两个框架 - frame[0]
包含一个脚本,可以使用
frame[1]
top.frames[1].location.href = 'http://some_location.com/page.html';
然后在该页面上执行操作,例如在页面内搜索文本。在执行此操作之前,我需要脚本等到page.html
加载到第二帧中,并且我无法在第二页中使用onload=...
,因为我无法控制其来源。
有办法做到这一点吗?
答案 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;
}
}