Почему всплывающее предупреждение может повлиять на "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";
};