2010-02-09 114 views
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

如果在return false之前添加以下行,$(document).ready會觸發嗎?

testpopup.document.close(); 

雖然這是一個瘋狂的猜測,我還沒有測試過這個。

+0

它確實有效。 +1 – 2010-02-09 02:41:36

+0

是的,謝謝你,這是工作...你知道任何方式來看看與Firebug的彈出窗口的內容? – Mottie 2010-02-09 03:19:34

+1

@fudgey你可以按F12打開Firebug(有點晚哈哈哈) – LuisClemente 2012-06-15 08:03:33

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的方法是正確的方法。

+0

+1感謝您的洞察力和回答的嘗試;) – Mottie 2010-02-09 03:20:38

相關問題