Как получить JavaScript в одном кадре, чтобы ждать, пока страница загрузится во втором кадре - PullRequest
2 голосов
/ 05 августа 2009

У меня есть два кадра в наборе кадров - frame[0] содержит скрипт, который загружает страницу в frame[1] с использованием

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

, а затем выполняет действия на этой странице, например, поиск текста на странице. Мне нужно, чтобы скрипт ждал, пока page.html не загрузится во втором фрейме, прежде чем сделать это, и я не могу использовать onload=... на второй странице, потому что у меня нет контроля над его источником.

Есть ли способ сделать это?

Ответы [ 3 ]

3 голосов
/ 05 августа 2009

использовать событие onload элемента FRAME

редактирование:

<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 голосов
/ 14 октября 2009

Ну, я делаю это, и это работает.

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;
  }
}
0 голосов
/ 05 августа 2009

Если у вас нет контроля над источником загруженной страницы и, что более важно, если он поступает из другого домена, тогда есть только один ответ:

Вы не можете.

Межкадровая связь между разными доменами невозможна. И вам нужна межкадровая связь, потому что вам нужно что-то вроде функции готовности jquery на загруженной странице, чтобы определить, загружена ли вся страница (DOM).

...