需要帮助跟踪一个jQuery的bug

问题描述:

我一直在处理与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

我不认为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