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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top