appendChild no IE6 / IE7 não funciona com elementos existentes
-
22-07-2019 - |
Pergunta
Eu tenho uma div que precisa ser movido de um lugar para outro no DOM. Então, no momento eu estou fazendo isso assim:
flex.utils.get('oPopup_About').appendChild(flex.utils.get('oUpdater_About'));
Mas, IE, sendo, assim, IE, ele não funciona. Ele funciona todos os outros navegadores, mas não no IE.
Eu preciso fazê-lo desta forma que o elemento (div) 'oUpdater_About' precisa ser reutilizados, uma vez que é preenchido mais e mais.
Então eu só precisa ser capaz de mover a div ao redor do DOM, appendChild vai deixar que isso aconteça em todos os navegadores, mas, IE.
Agradecemos antecipadamente!
Solução
Você tem que remover o nó em primeiro lugar, antes que você possa anexá-lo em qualquer outro lugar. Um nó não pode estar em dois lugares ao mesmo tempo.
var node = flex.utils.get('oUpdater_About')
node.parentNode.removeChild(node);
flex.utils.get('oPopup_About').appendChild(node);
Outras dicas
Certifique-se de clonar o oUpdater_About (com node.cloneNode (true)) Desta forma, você obter uma cópia e pode reutilizar o dom-trecho tão frequentemente como você quer (em qualquer navegador)
Este post tende a sugerir que há de fato um problema com appendChild com relação a esta:
http://metadeveloper.blogspot.com/2007 /01/ie-7-appendchild-bug.html
Você já tentou clonar-lo, removê-lo, em seguida, inserir o clone vez?
James