Почему всплывающее предупреждение может повлиять на "designMode"?

Я экспериментировал, чтобы построить редактор страниц. Одна проблема просто сводила меня с ума в Firefox.

Код страницы ниже:

<body>
<iframe WIDTH=200 HEIGHT=200 id="myEditor"></iframe>
<script>

    function getIFrameDocument(sID){
        // if contentDocument exists, W3C compliant (Mozilla)
        if (document.getElementById(sID).contentDocument){
            alert("mozilla"); // comment out this line and it doesn't work
            return document.getElementById(sID).contentDocument;
        } else {
            // IE
            alert("IE");
            //return document.getElementById(sID);
            return document.frames[sID].document;
        }
    }

    getIFrameDocument("myEditor").designMode = "On";

</script>

</body>

Он просто проверяет целесообразность установки "designMode" в стиле Mozilla или IE. Когда страница загружается, всплывает "Mozilla"; щелкните область фрейма, и фокус будет на фрейме, и я могу вводить с клавиатуры.

Это выглядит хорошо, но когда я закомментирую строку "alert("mozilla");, Это не работает. "DesignMode" это "Off", как показывает FireBug.

Это так зашито. Почему оповещение может повлиять на DOM и JavaScript? Кстати, мой Firefox 3.0.6.

1 ответ

Решение

Потому что предупреждение дает IFRAME время для загрузки. Вы должны установить designMode на "on" только после загрузки документа iframe:

iframe.onload = function() {
    doc.designMode = "on";
};
Другие вопросы по тегам