我正在使用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编辑器中。
我需要帮助。提前谢谢。
答案 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”,则可以在任何地方插入文本。
希望有所帮助!