He estado jugando con la adición de elementos iframe ocultos a una página, y quiero manipular el DOM de estos una vez cargados. Me di cuenta de que no puedo comenzar a manipular el DOM inmediatamente después de agregar el iframe a una página, ya que aún no se ha cargado. Esto no se puede hacer con el evento DOMContentLoaded
ya que se dispara contra el documento que no existe en el iframe hasta que se lo agrega a la página, por lo que debemos usar el evento load
.iframe comportamiento de onload vs addEventListener ('load')
Aquí hay un código de prueba:
var iframe = document.createElement('iframe');
iframe.onload = function() { console.log('loaded!'); };
document.getElementsByTagName('body')[0].appendChild(iframe);
esto funciona como se espera, sin embargo, cuando lo cambio a addEventListener
que ni siquiera se añaden a la DOM:
var iframe = document.createElement('iframe');
iframe.addEventListener('load', function() { console.log('loaded!'); });
document.getElementsByTagName('body')[0].appendChild(iframe);
no he t probado attachEvent
en IE.
¿Alguien arrojó algo de luz sobre esto?
Creo que tu punto sobre el 3er parámetro era exactamente el problema, no estaba obteniendo el error que hiciste, pero probablemente fue suprimido de alguna manera. No recuerdo, pero claramente no lo probé en Chrome (me parece tonto ...). Agradable, gracias. – roryf