IE中的document.execCommand问题

时间:2012-12-18 15:56:41

标签: javascript internet-explorer

我正在使用html编辑器,并希望扩展功能以在光标位置插入html控件。

我使用的代码是:

document.execCommand("insertHTML", false, "<input type=\"text\">") 

此代码可以正常使用Chrome和FF,但在IE中存在问题。它根本不起作用并抛出“无效参数”错误。我尝试了以下代码:

if (document.selection && document.selection.createRange) {
     range = document.selection.createRange();
     range.collapse(false);
     range.pasteHTML(value);
}

但是文本框添加到文档的顶部而不是html编辑器中。

我需要帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

看起来你正在混合和匹配该方法中的IE和现代浏览器标准。我不确定它是否像您认为的那样有效。尝试使用firefox或alert()的一些console.log()来查看实际进入该方法的浏览器:)

Firefox中没有document.selection。它是window.getSelection()而不是:

尝试使用以下内容。应该适用于两种浏览器

if (document.createRange) { // "Standards" :)
    var selection = window.getSelection();

    if (selection.rangeCount > 0) {
        selRange = selection.getRangeAt(0);
        var node = document.createTextNode(stringValue);
        selRange.insertNode(node);
        selRange.setStartAfter(node);
        selection.removeAllRanges();
        selection.addRange(selRange);
    }

} else if (document.selection) { // fallback for IE6-8
    selRange = document.selection.createRange();

    selRange.select();
    selRange.pasteHTML(stringValue);
}

如果将其封装在方法中并传递“stringValue”,则可以在任何地方插入文本。

希望有所帮助!