2

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

  1. Firebug 在弹出窗口中不起作用,所以我看不到发生了什么。
  2. 窗口永远不会完成加载(至少我可以在 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()) });,它工作正常,所以我确定它 document.ready 永远不会被调用

或者,有没有更好的方法来做到这一点?

4

2 回答 2

4

$(document).ready如果在 ? 之前添加以下行,是否会着火return false

testpopup.document.close();

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

于 2010-02-09T02:23:35.957 回答
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;
}​

这有效..

[更新] 但是 Aistina 的方法是正确的方法。

于 2010-02-09T02:20:03.723 回答