2011-05-20 66 views
1

我有以下代碼的JavaScript怪異的行爲(使用jQuery)

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'元素中。

奇怪的b​​eheavior是:這隻適用於當我取消註釋行「//警報(彈出);」 有人知道我如何做到這一點,沒有警報工作?

回答

1

該警報使頁面有足夠的時間加載。您的行var x = popUp.document.getElementById('content');content對象有機會呈現之前執行。而且因爲它還沒有在頁面上,所以你不能附加到它。

要等待頁面加載,請使用window.opener對象。有關更多信息,請訪問:http://www.webreference.com/js/tutorial1/opener.html

+0

你是對的,但我做了不同的解決方案: 我不喜歡這個 a.addEventListener(「負荷」,事端(),TRUE); – Rodolfo 2011-05-20 13:52:44