Firefox问题中的iframe designmode

时间:2010-06-04 13:06:17

标签: javascript

这适用于IE,但在Firefox中它很奇怪:

如果firefox正常打开,设计模式不起作用,但如果我在上面设置断点

  

this.editor.contentWindow.document.designMode   =“开”;

行,然后释放它(在它打破之后),设计模式正常工作!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <script type="text/javascript">



TheEditor = function() {  
    this.editor = null;
    this.mainDiv=document.getElementById("mainDiv"); 
}

TheEditor.prototype = {

      InitializeEditor: function() {


        this.editor=document.createElement('iframe');
        this.editor.frameBorder=1;
        this.editor.width = "500px";
        this.editor.height="250px";       

        this.mainDiv.appendChild(this.editor);

        this.editor.contentWindow.document.designMode = "On";       
    }     


}
            window.onload = function(){
                obj = new TheEditor;
                obj. InitializeEditor();
            }
        </script>
    </head>
    <body>
       <div id="mainDiv">
    </div>
    </body>
</html>

2 个答案:

答案 0 :(得分:0)

我不完全理解为什么,但打开(可选择编写内容)和关闭文档解决了问题(至少在OSX上的FF5中):

this.editor.contentWindow.document.open();
// optionally write content here
this.editor.contentWindow.document.close();
this.editor.contentWindow.document.designMode = "on";

我的另一个想法是围绕designMode = "on"语句设置超时(我记得过去必须为FF做这个),但它没有用。

我认为这与FF在IFRAME中加载“某些东西”有关,而且还没有准备好打开designMode。

我猜你也可以使用DIV上的contentEditable="true"属性。

无论如何,我希望这有帮助。

答案 1 :(得分:0)

我认为这是因为还没有创建contentDocument,我认为你也可以在这个事件中设置iframe的onload事件并设置设计模式,因为在加载页面时调用了这个事件,所以contentDocument存在!