window.open和$(document).ready

时间:2010-02-09 01:33:02

标签: jquery popupwindow

我正在尝试制作一个打开弹出窗口的书签。在此窗口中是一个选定的CSS类列表,在window.opener页面上突出显示该对象。所以我遇到了两个问题。

  1. Firebug在弹出窗口中不起作用,所以我看不到发生了什么。
  2. 窗口永远不会完成加载(至少我可以在Firefox中告诉)因此窗口内的$(document).ready(function(){...})永远不会被执行。
  3. 我无法从远程位置打开弹出窗口,因为我遇到了跨域问题。以下是一些示例代码:

    <script type="text/javascript">
    function makepopup(){
     var popup = '<!DOC'+'TYPE HT'+'ML PUBLIC "-//W3C//DTD HT'+'ML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' +
     '<ht'+'ml><he'+'ad><title>Test</title>' +
     '<scr'+'ipt type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></scr'+'ipt>' +
     '</he'+'ad><bo'+'dy>' +
     '<div id="wrap">' +
      'testing popup' +
     '</div>' +
     '<input type="button" value="Click Me" />' +
     '<scr'+'ipt type="text/javascript">' + 
     '$(document).ready(function(){' +
     '$(":input").click(function(){ alert($(window.opener.doc'+'ument).find("#test").html()) });' +
     '})' +
     '</scr'+'ipt>' +
     '</bo'+'dy></ht'+'ml>';
     var testpopup = window.open( '','test','toolbar=1,location=0,status=0,width=500,height=450,scrollbars=1' );
     testpopup.document.write(popup);
     return false;
    }
    </script>
    
    <a href="#" onclick="javascript:makepopup()">Open popup</a>
    
    <div id="test" style="display:none">This is hidden text</div>
    

    如果我在弹出窗口$(":input").click(function(){ alert($(window.opener.document).find("#test").html()) });中将以下内容添加到控制台,它可以正常工作,所以我确定文档。从未被调用过。

    或者,有更好的方法吗?

2 个答案:

答案 0 :(得分:4)

如果您在$(document).ready之前添加以下行,那么return false会触发吗?

testpopup.document.close();

这是一个疯狂的猜测,我没有测试过。

答案 1 :(得分:2)

确实document.ready永远不会发火..(我不知道为什么......

但是您可以在html之后添加脚本并删除document.ready,因为此时文档总是被加载..

function makepopup(){
 var popup = '<!DOC'+'TYPE HT'+'ML PUBLIC "-//W3C//DTD HT'+'ML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' +
 '<ht'+'ml><he'+'ad><title>Test</title>' +
 '<scr'+'ipt type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></scr'+'ipt>' +
 '</he'+'ad><bo'+'dy>' +
 '<div id="wrap">' +
  'testing popup' +
 '</div>' +
 '<input type="button" value="Click Me" />'  +
 '</bo'+'dy></ht'+'ml>'+
 '<scr'+'ipt type="text/javascript">' + 
 '$(":input").click(function(){ alert($(window.opener.doc'+'ument).find("#test").html()) });' +
 '</scr'+'ipt>';
 var testpopup = window.open( '','test','toolbar=1,location=0,status=0,width=500,height=450,scrollbars=1' );
 testpopup.document.write(popup);
 return false;
}​

这有效..

<强> [UPDATE] 从Aistina那里获取方法是正确的方法。