jQuery: получить документ ready () в дочернем окне - PullRequest
12 голосов
/ 30 января 2011

Я пытаюсь получить уведомление, когда открываемое мной дочернее окно загружает и готово.Это не похоже на работу:

win = window.open(href, 'test', 'width=300, height=400');
win.focus();
$(win.document).ready(function() {
           // Ok, the function will reach here but if I try to manipulate the
           // DOM it doesn't work unless I use breakpoints
           $(this).contents().find("...").doStuff(); // nothing happens
    });

Что мне нужно сделать?

Ответы [ 4 ]

10 голосов
/ 30 января 2011

Вы пробовали это?-

$(win.document).ready(function() {
    $(win.document).contents().find("...").doStuff();
});

В этом вопросе обсуждается нечто очень похожее.Дубликат

6 голосов
/ 19 февраля 2013

У меня была похожая проблема, и для меня событие .load в окне работало, а .ready - нет. Так что вы можете попробовать:

win = window.open(href, 'test', 'width=300, height=400');
$(win).load(function() {
    $(this).contents().find("...").doStuff(); 
});
1 голос
/ 30 января 2011

Используйте window.opener в скрипте на сайте, который вы загружаете и выполняете функцию, определенную в глобальном (!) На первой странице.

Главная страница:

<html>
<head>
<script type="text/javascript">
    window.notify = function () {
        alert('runned from opened window');
    };
    window.onload = function() {
        document.getElementById('button').addEventListener('click', function() {
            window.open('test.html');
        }, false);
    };
</script>
</head>
<body>
<button id="button">Open window</button>
</body>

Открытая страница:

<html>
<head>
<script type="text/javascript">
    window.onload = function() {
        window.opener.notify()
    };
</script>
</head>
<body>
    Popup site
</body>
</html>
0 голосов
/ 14 декабря 2016

Просто добавьте этот код в iframe,

$(document,parent.document).ready(function(){
alert('Done');
});  
...