Почему всплывающее предупреждение может повлиять на "designMode"? - PullRequest
0 голосов
/ 12 апреля 2009

Я экспериментировал, чтобы построить редактор страниц. Одна проблема просто свела меня с ума в 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»; щелкните область iframe, и фокус будет на iframe, и я могу вводить с клавиатуры.

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

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

1 Ответ

2 голосов
/ 12 апреля 2009

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

iframe.onload = function() {
    doc.designMode = "on";
};
...