iframe中的document.execCommand不起作用

时间:2011-06-24 05:05:50

标签: javascript wysiwyg execcommand

我正在使用我的WYSIWYG编辑器。我有这样的代码:

doc.execCommand(cmd, false, null);

cmd 参数将为“粗体”,“斜体”等。 doc 变量引用iframe中的文档,该文档在其他位置初始化:

doc = iframe1.contentWindow.document; 

它在Chrome中运行良好,但在IE(我的IE9)中根本不起作用。

我使用开发人员工具调试了我的代码并发现没有错, execCommand 函数不起作用。

我在互联网上搜索过,找不到可用的解决方案。

有人会帮我一个忙吗?

代码示例:

function $see(e, o) {
    var that = this;
    ...
    this.e = $see.make('iframe', { 'class': 'editor' }); // editor iframe    
    this.e.onload = function () {  // call when the document is loaded
        var d = that.e.contentWindow || that.e.contentDocument;
        if (d.document) d = d.document;
        that.doc = d;
        that.doc.write('<html><head></head><body></body></html>');
        that.doc.body.innerHTML = that.ta.value; // that.ta refers to an textarea
        that.doc.body.setAttribute('contenteditable', 'true');
        ...
    };
}
$see.prototype.exec = function (cmd) { 
    // call in an <a> tag's onclick event outside the iframe
    this.doc.execCommand(cmd, false, null); 
};

1 个答案:

答案 0 :(得分:3)

这是因为在不同的浏览器中使用iframe有不同的方法

这是它应该如何运作

var doc= iframe1.contentWindow || iframe1.contentDocument;
if (doc.document)
 doc=doc.document;

<强>更新

好吧我觉得我在这里犯了一个小错误就是它应该是这样的:

var doc = iframe.contentWindow || iframe.contentDocument.defaultView;
if (doc.document)
doc=doc.document;