2

フレームセットに2つのフレームがあります-frame[0]ページを読み込んでframe[1]使用するスクリプトが含まれています

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

次に、そのページでアクションを実行します。たとえば、ページ内のテキストを検索します。page.htmlこれを行う前に、スクリプトが2番目のフレームにロードされるまで待機する必要がありますonload=...。また、ソースを制御できないため、2番目のページでは使用できません。

これを行う方法はありますか?

4

3 に答える 3

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' )";
于 2009-08-05T09:03:06.293 に答える
0

ロードされたページのソースを制御できない場合、さらに重要なことに、それが別のドメインからのものである場合、答えは 1 つしかありません。

できません。

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

于 2009-08-05T09:20:30.703 に答える
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;
  }
}
于 2009-10-14T16:55:55.747 に答える