Jquery: как проверить, полностью ли загружено новое окно? / окно загружает внешнюю страницу (например, www.yahoo.com) - PullRequest
7 голосов
/ 26 августа 2011

следующее не работает, почему?

var myWindow=null;
myWindow = window.open(targetUrlVar,"_blank","resizable=yes");
$(myWindow).load(function(){
    alert('hello');
});

Несмотря на то, что MyWindow является ссылкой на окно, не выполняется проверка, была ли она полностью загружена.я думал, что $(window).load(...) будет работать здесь для замены "окна" на "MyWindow".

следующие работы:

$(myWindow).load(function(){
    alert('hello');
});

для targetUrlVar, являющегося внутренним ресурсом (как страница, принадлежащаямой домен) это работает .. но как только я захотел использовать .load() или myWindow.onload() с targetUrlVar, являющимся внешней страницей (например, www.yahoo.com или www.google.com), он небольше не работает ... Никаких предупреждений не отображается ..

мне нужна ваша помощь ... спасибо всем

Ответы [ 3 ]

1 голос
/ 27 августа 2011

Если вы хотите активировать оповещение, когда дочернее окно открыто, независимо от состояния DOM дочернего окна, тогда это должно работать.Я также предоставил способ проверить это предположение.

Создайте тестовый сценарий PHP (или аналогичный язык сценариев) со следующим содержимым:

<html>
<head><title>test</title></head>
<body>
    <?php sleep(5); // Sleep to delay DOM from loading ?>

    Done sleeping...
</body>
</html>

Затем вызовите эту тестовую страницу как свое дочернее окноиспользуя следующий javascript:

win = window.open('test.php', 'test', 'width=300, height=400, x=800');
win.focus();
$(win.document).ready(function() {
    alert('Window is open');
});

Вы заметите, что оповещение () из родительского окна срабатывает до того, как в дочернем окне появляется сообщение «Закончено спать ...».

0 голосов
/ 20 июля 2013

Я вижу, что этот вопрос несколько устарел.

Однако, как сказал Артур,

для targetUrlVar, являющегося внутренним ресурсом (как страница, принадлежащая моему домену), он работает ..но как только я захотел использовать .load () или myWindow.onload () с targetUrlVar, являющимся внешней страницей (такой как www.yahoo.com или www.google.com), он больше не работает... Предупреждение не отображается ..

Я думаю, что проблема может быть в том, что targetUrlVar является внешним;предупреждение может быть заблокировано для предотвращения межсайтовых сценариев (он же XSS).

0 голосов
/ 26 августа 2011
$(document).ready(function() {
   //perform tasks, DOM is loaded
});

Надеюсь, это поможет.

...