繁体   English   中英

IE中的document.execCommand问题

[英]Issue with document.execCommand in IE

我正在使用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编辑器内部。

我需要帮助。 提前致谢。

看起来您正在用这种方法混合并匹配IE和Modern浏览器标准。 我不确定它是否按照您的想法工作。 尝试使用一点console.log()来查看firefox或alert(),看看哪些浏览器实际输入了该方法:)

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”,则可以在任何位置插入文本。

希望有帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM