2010-02-18 40 views
1

我一直在處理與window.opener交互的彈出窗口。我發現IE試圖附加一個對象時無法正常工作。我已經設置了demo page here需要幫助跟蹤一個jQuery的bug

該演示基本上是用一個按鈕打開一個彈出窗口。它旨在突出顯示頁面的各個部分,如我在previous question中所述。

在演示中,單擊彈出式窗口按鈕將兩個div添加到window.opener。一個div作爲字符串添加,第二個作爲對象添加。當試圖追加一個對象時,我在IE中出錯。這裏是javascript:

$(':button').click(function(){ 
$('#clicked').empty().show().html('Click detected!').fadeOut(); 
var str = '<div class="highlight" style="position:absolute;height:50px;width:50px;left:150px;top:100px;background:#fc0;zIndex:99;">str</div>'; 
var obj = $('<div/>', { 
    'class': 'highlight', 
    css: { 
    position: 'absolute', 
    height:  '50px', 
    width:  '50px', 
    left:  '100px', 
    top:  '100px', 
    background: '#08f', 
    zIndex:  99 
    } 
}).html('obj'); 
try { $(window.opener.document.body).append(obj); } catch(err) { alert(err.description) }; 
$(window.opener.document.body).append(str); 
}) 

所以,我在尋求幫助,跟蹤jQuery的問題。

+0

你看過jQuery UI嗎?他們有一個對話框組件可能有所幫助: http://jqueryui.com/demos/dialog/ – 2010-02-18 16:01:54

+0

嗨盧克和感謝您的評論,但我想添加一個div到窗口開啓器來突出顯示頁面的一部分。它需要定位和半透明,所以一個對話框不是我想要的。 – Mottie 2010-02-18 16:20:38

回答

3

我不認爲IE會讓你追加一個窗口中創建的元素到另一個窗口的DOM中。這真的很挑剔。同樣,如果您將構造的Javascript對象從一個窗口傳遞到另一個窗口,它有時會變得很嚇人,特別是如果創建窗口稍後消失。

嘗試使用window.opener.$("<div/>")來創建您的元素。

+0

這是一個非常漂亮和優雅的解決方案。所以我想我應該問是否需要繼續使用jQuery來解決問題? – Mottie 2010-02-18 16:13:49

+0

這對於jQuery來說並不是什麼問題 - 圖書館可以爲你做什麼並不明智,因爲當你創建一個元素時,它不知道你會嘗試將它粘在另一個窗口的DOM中。 – Pointy 2010-02-18 16:17:54

+0

好吧,謝謝你的幫助:) – Mottie 2010-02-18 16:21:10