parent.document.getElementById ("...") является нулевым или не является объектом в IE7 - PullRequest
3 голосов
/ 20 октября 2011

Я провел некоторое исследование, но, как новичок в JavaScript, я не могу заставить что-то работать для моего конкретного случая:

У меня есть iframe на странице, и в документе этого iframe у меня есть следующий код:

function fun(){
var slideTitle = api.getField('title');
    parent.document.getElementById("slidecaptionOoH").innerHTML = slideTitle;

В родительском документе у меня есть: <h4 id="slidecaptionOoH"></h4>

Я пытался поместить комментарий между тегами, но я все еще получаю сообщение об ошибке в IE7. Страница отображается нормально, но, очевидно, я не хочу, чтобы люди видели ошибку.


Ну, я думаю, я немного сузил проблему. Я думаю, что это может быть связано с выполнением функции документа iframe до завершения загрузки родителя. Я использую инфраструктуру treesaver.js в родительском, которая включает в себя тяжелые манипуляции с DOM. Когда я отключаю деревья, я больше не получаю ошибку.

Итак, я думаю, теперь мой вопрос: как отложить функцию до завершения загрузки родителя? Или вообще отложить загрузку документа iframe?

1 Ответ

3 голосов
/ 20 октября 2011

Вы можете продолжать пул родителя, пока он не загрузит соответствующий дочерний элемент:

function fun(){
    var slideTitle = api.getField('title');
    var el = parent.document.getElementById("slidecaptionOoH");
    if (el){
        el.innerHTML = slideTitle;
    } else{
        setTimeout(fun, 50);
    }
    el = null;
}

Но это всего лишь грязная работа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...