javascript - 为什么弹出警报会影响 "designMode"?

标签 javascript firefox alert 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>

它只是检查以Mozilla方式或IE方式设置“designMode”是否合适。页面加载时,会弹出“Mozilla”;点击iframe区域,焦点就在iframe上,可以用键盘输入了。

这看起来不错,但是当我注释掉行“alert("mozilla");”时,它不起作用。正如 FireBug 所示,“designMode”为“Off”。

这太有线了。为什么警报会影响 DOM 和 javascript? 顺便说一句,我的 Firefox 是 3.0.6。

最佳答案

因为警报给了 iframe 加载时间。您应该仅在 iframe 文档加载后将 designMode 设置为“on”:

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

关于javascript - 为什么弹出警报会影响 "designMode"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741343/

相关文章:

javascript - Dojo JsonRestStore 的数组不在 JSON 响应的根级别

javascript - 该功能在 chrome 中运行良好,但在 IE 和 Firefox 中运行不佳

javascript - 当 Angular 改变状态时,如何让屏幕阅读器阅读整个页面?

ubuntu - Firefox 在 network.dnsCacheExpiration 间隔后不清除 DNS 缓存

javascript - Bootstrap 4隐藏未关闭的警报

javascript - 从具有变量的函数中获取变量

javascript - 如何在现有应用程序中添加 Angular js 模块

javascript - 是否可以模拟不可枚举的属性?

html - 固定第一列表第一列在 Firefox 中 td 调整大小后消失

javascript - 消失基于时间的警报框