Я играл с добавлением скрытых элементов 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.
Кто-нибудь проливает свет на это?