Я создаю приложение CMS, которое я отлаживаю сейчас для IE. Но вещи случаются, я не могу понять.Не удается получить доступ к содержимому iframe в IE
Сначала у меня есть div с содержимым страницы. Я извлекаю содержимое div и с javascript создаю iFrame и добавляю его в div. Это сделано для создания WYSIWYG-редактора. Затем, когда я хочу добавить контент в iFrame, проблемы начинаются. По какой-то причине IE не может получить доступ к телу iFrame. Я могу предупредить документ iFrame, который дает мне [object Document] или [object HTMLDocument], но когда я затем предупреждаю тело, я получаю null.
Я использую эту функцию для получения документа в части объектов JavaScript:
iframedoc: function(aID) {
if (document.getElementById(aID).contentDocument){
return document.getElementById(aID).contentDocument;
} else {
var iFrame = document.getElementById(aID);
return iFrame.contentWindow.document;
}
},
и это, где я называю это в первый раз:
tas[i].innerHTML = "";
tas[i].appendChild(ta_edit_functions);
tas[i].appendChild(ta_edit);
tas[i].appendChild(ta_result);
alert(ta.iframedoc(ta_edit_id));
ta.iframedoc(ta_edit_id).body.innerHTML = ta_edit_content;
ta.iframedoc(ta_edit_id).designMode = 'on';
Здесь я опорожнить DIV , добавьте div, содержащий функции WYSIWYG, iFrame и текстовое поле для отправки формы.
Я тестирую в IE 8 и 9. Самое страшное в том, что когда я ставил предупреждение перед первым вызовом iframedoc в IE 8, я внезапно получаю тело.
Я был бы очень благодарен, если бы кто-то мог по крайней мере указать мне в правильном направлении. Я действительно не понимаю, что происходит.
Это, безусловно, так! Добавление кода в событие onload iFrame показывает, что сначала добавляются iFrames (с использованием цикла, устанавливающего все div с тем же классом) и только после того, как этот цикл действительно загружен. Следующая проблема заключается в том, что я не могу определить идентификатор элемента, запускающего функцию, что действительно важно. Вызов «это» просто получает окно в IE8. Вы не знаете, как это сделать? – Raapwerk
Я добавляю событие OnLoad с помощью этого: функция addOnload (элемент, функц) { \t если (element.attachEvent) возвращение \t \t element.attachEvent ('OnLoad', функц); \t else return element.addEventListener ('load', funct, false); } – Raapwerk