代码之家  ›  专栏  ›  技术社区  ›  Mottie

window.open和$(document).ready

  •  2
  • Mottie  · 技术社区  · 16 年前

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

    1. 窗口永远无法完成加载(至少在Firefox中可以看出),因此 $(document).ready(function(){...})

    我无法从远程位置打开弹出窗口,因为我遇到了跨域问题。以下是一些示例代码:

    <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 回复  |  直到 16 年前
        1
  •  4
  •   Aistina    16 年前

    是吗 $(document).ready 如果在 return false ?

    testpopup.document.close();
    

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

        2
  •  2
  •   Gabriele Petrioli    16 年前

    的确 document.ready 永远不要开枪( )

    但是您可以在html之后添加脚本并删除 准备好了吗

    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;
    }​
    

    这很有效。。

    [更新]

    推荐文章