更新:
我有这个功能。它适用于非IE浏览器,但IE9无法正常工作。 我正在调用此函数 execCommandOnElement(testDiv,“insertHTML”,“some content”)
function execCommandOnElement(el, commandName, value) {
if (typeof value == "undefined") {
value = null;
}
if (typeof window.getSelection != "undefined") {
// Non-IE case
// Temporarily enable designMode so that
// document.execCommand() will work
document.designMode = "on";
//place caret
selection.collapse (anchorNode, anchorOffset);
selection.extend( focusNode, focusOffset);
// Execute the command
document.execCommand(commandName, false, value);
// Disable designMode
document.designMode = "off";
}
else if (typeof document.body.createTextRange != "undefined") {
close_modal ();
// IE case
var textRange = document.body.createTextRange();
textRange.moveToElementText(el);
document.execCommand(commandName, false, value);
}
}
我不需要在我的内容可编辑div中选择一些东西(例如粗体文本),我只需要IE粘贴放置插入符号的HTML。因为我需要使用对话框来获取要粘贴的内容,所以我使用此函数来知道放置它的位置。
//launch
$(".launch_modal").click(function() {
open_modal ( $(this).attr( 'data-modal' ) );
selection = window.getSelection() ;
anchorNode = selection.anchorNode;
anchorOffset = selection.anchorOffset;
focusNode = selection.focusNode;
focusOffset = selection.focusOffset;
});
我非常感谢你的帮助。我整天都在这里。
答案 0 :(得分:2)
昨天我给了你code to help with this。也许您没有意识到保存插入位置与保存选择完全相同?此外,您不需要execCommandOnElement()
函数为您执行的操作:启用designMode
的内容仅用于处理不可编辑的内容,因此您可以完全删除此函数并使用{ {1}}。
您的代码不起作用的一个原因是IE 9支持document.execCommand()
,但不支持选择的非标准window.getSelection()
方法。
以下是我认为你想要的一个例子:
jsFiddle:http://jsfiddle.net/nmd3A/2/
代码:
extend()