2009-08-05 6 views
2

秒のフレームにロードされるまで待つように1つのフレームではJavaScriptを取得するには - frame[0]どのようにページがIフレームセットで2つのフレームを持って

top.frames[1].location.href = 'http://some_location.com/page.html'; 

を使用してframe[1]にページをロードしてから実行するスクリプトが含まれていますそのページ内のテキストを検索するなど、そのページ上のアクション。これを行う前に、page.htmlが2番目のフレームにロードされるまで待つスクリプトが必要です。そのソースを制御できないため、2番目のページにonload=...を使用することはできません。

これを行う方法はありますか? FRAME要素の

答えて

2

使用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')"; 
+0

これを拡張できますか?私が使用している場合 top.frames [1] .location.href = 'http://ongar.org/mypage.html'; top.frames [1] .onload(alert( 'loaded')); フレーム[1]にすでにページが存在するため、mypage.htmlがロードされる前に警告が表示されます。 mypage.htmlが完全に読み込まれた後、警告が欲しいです。 –

+0

真ですが、上記の例では、新しいページのlocation.pathname値をチェックする句が欠落していました。 –

+0

iframeのonloadイベントは役に立たないものです。ブラウザ間では、オンロードイベントがなぜ乱雑になるのかを理解していても、ブラウザ間で非常に矛盾しています。慎重に使用してください! – mixonic

0

もしあなたがhav読み込まれたページのソースを制御することはできません。さらに重要なのは、別のドメインからのものであれば、答えは1つだけです。

できません。

異なるドメイン間のフレーム間通信は不可能です。また、ページ全体(DOM)がロードされているかどうかを判断するために、ロードされたページにjqueryの準備関数などが必要なため、フレーム間通信が必要です。

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; 
    } 
}
関連する問題