Precisa de ajuda para rastrear um bug jQuery
-
21-09-2019 - |
Pergunta
Eu tenho trabalhado em uma janela pop -up que interage com o window.opener
. Encontrei um problema específico com o IE não funcionando ao tentar anexar um objeto. Eu configurei um Página de demonstração aqui.
Basicamente, o que a demonstração faz é abrir uma janela pop -up com um botão. Pretende destacar partes da página como descrevi no meu pergunta anterior.
Na demonstração, clicar no botão da janela pop -up anexa duas divs ao window.opener
. Um div
é adicionado como uma string e o segundo é adicionado como um objeto. Recebo um erro no IE ao tentar anexar um objeto. Aqui está o 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);
})
Então, estou pedindo ajuda para rastrear o problema com o jQuery.
Solução
Eu não acho que o IE permitirá que você anexar um elemento criado em uma janela para o DOM de outra janela. É realmente exigente sobre isso. Da mesma forma, às vezes fica assustado se você passar os objetos JavaScript construídos de uma janela para outra, especialmente se a janela de criação mais tarde desaparecer.
Tente usar window.opener.$("<div/>")
Para criar seu elemento.