Я играл с добавлением скрытых элементов iframe на страницу, и я хочу манипулировать DOM из этих когда-то загруженных. Я заметил, что не могу начать манипулировать DOM сразу после добавления iframe на страницу, так как он еще не загружен. Это невозможно сделать с событием DOMContentLoaded
, поскольку оно запускается для документа, которого нет в iframe, пока он не будет добавлен на страницу, поэтому мы должны использовать событие load
.
Вот код теста:
var iframe = document.createElement('iframe');
iframe.onload = function() { console.log('loaded!'); };
document.getElementsByTagName('body')[0].appendChild(iframe);
Это работает, как и ожидалось, однако, когда я изменяю его на addEventListener
, оно даже не добавляется в DOM:
var iframe = document.createElement('iframe');
iframe.addEventListener('load', function() { console.log('loaded!'); });
document.getElementsByTagName('body')[0].appendChild(iframe);
Я не проверял attachEvent
в IE.
Кто-нибудь пролил свет на это?