Как я могу проверить, загрузилось ли дочернее окно браузера? - PullRequest
2 голосов
/ 15 июля 2009

У меня есть ссылка на странице, которая открывает новое окно, и иногда это второе окно загружается очень долго. Я хочу отключить ссылку в родительском окне, пока дочернее окно не завершит загрузку. Я знаю, что у меня может быть дочернее окно onload () для оповещения родителя, но я не хочу связываться с дочерним, поэтому у меня есть небольшой javascript, который опрашивает дочернее окно, чтобы увидеть, есть ли у него какие-либо данные, кроме того, что не работает Я не могу newwindow.document.getelementbyid, потому что я никогда не могу быть уверен, что на этой странице будет какой-то конкретный элемент. Я просто хочу посмотреть, есть ли где-нибудь в нем.

Ответы [ 2 ]

3 голосов
/ 15 июля 2009

Просто добавьте слушателя к событию загрузки дочернего окна. Вот действительно простой пример

<html>
<head>
<script type="text/javascript">

onload = function()
{
  document.getElementById( 'test' ).onclick = function( event )
  {
    event.preventDefault();
    event.returnValue = false;
    var link = event.target || event.src;
    var childWin = window.open( link.href, 'child', 'width=400,height=300' );
    childWin.onload = function()
    {
      alert( 'child window loaded!' );
    }
  }
}

</script>
</head>
<body>

<a href="test2.html" id="test">test</a>

</body>
</html>

ПРИМЕЧАНИЕ: Я должен сказать вам, что это работает, только если URL, который вы загружаете в дочернем элементе, принадлежит тому же домену, что и родительский. Модель безопасности браузера не позволяет вам поступить иначе.

2 голосов
/ 15 июля 2009

Вы можете попробовать получить тег body и проверить, есть ли у него дети. Если это так, то страница либо загружена, либо очень близко. Достаточно близко ИМО.

Если URL-адрес ребенка не совпадает с доменом, вы ничего не можете сделать. Это будет уязвимость XSS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...