2011-05-20 44 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