0

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

我需要这方面的帮助。提前致谢。

4

1 回答 1

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

希望有帮助!

于 2012-12-18T16:13:49.463 回答