странное поведение JavaScript (с Jquery) - PullRequest
1 голос
/ 20 мая 2011

У меня есть следующий код

function exibirDialog(div) {
$("#divDialogo").ready(function() {
    $("#divDialogo").dialog({
        open: function() { },
        close: function() { $(this).dialog("destroy"); },
        buttons: {
            "Print": function() {
                var popUp = window.open('Print.aspx', "Print", "menubar=0,location=0,height=700,width=700");
                //alert(popUp);

                var x = popUp.document.getElementById('content');
                div.clone().appendTo(x);
            },
            "Close": function() { $(this).dialog("destroy"); }
        }
    });
});

}

Это похоже на: Когда я нажимаю кнопку «Печать», система открывает всплывающее окно (print.aspx) и копирует элемент div вэлемент 'content'.

Странное поведение: это работает, только когда я раскомментирую строку "// alert (popUp);"Кто-нибудь знает, как мне сделать, чтобы это работало без предупреждения?

1 Ответ

1 голос
/ 20 мая 2011

Предупреждение дает странице достаточно времени для загрузки.Ваша строка var x = popUp.document.getElementById('content'); выполняется до того, как объект content сможет быть обработан.А поскольку его еще нет на странице, вы еще не можете добавить к нему.

Чтобы дождаться загрузки страницы, используйте объект window.opener.Более подробная информация об этом доступна здесь: http://www.webreference.com/js/tutorial1/opener.html

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