我正在尝试使用html()方法实现退格功能,因为它重置了我的情况下不允许的元素的范围对象。
不幸的是,当我有多个节点时,它没有按预期工作。有什么办法可以从范围对象中获取当前节点引用吗?
这是我试过的代码。
<div id="myDiv" style="color:red" contenteditable="true">The color of this text is red.<br>yellow</div>
<br /><br />
<button id='two'>Backspace</button>
//javascript
$('#two').click(function()
{
var div = document.getElementById ("myDiv");
var doc = div.ownerDocument || div.document;
var win = doc.defaultView || doc.parentWindow;
var sel = win.getSelection();
var range = sel.getRangeAt(0);
if (document.createRange)
{ // all browsers, except IE before version 9
var textNode = div.firstChild; // the text node inside the div
if (textNode.data.length > 1)
{
var rangeObj = document.createRange ();
if(range.startOffset> 0)
{
// aligns the range to the second character
rangeObj.setStart (textNode, range.startOffset-1);
rangeObj.setEnd (textNode, range.startOffset);
}
rangeObj.deleteContents ();
}
}
});
答案 0 :(得分:1)
rangeObj.setStart (textNode, range.startOffset-1);
rangeObj.setEnd (textNode, range.startOffset);
添加以下内容而非上述行修复了我的问题。
rangeObj.setStart (range.startContainer, range.startOffset-1);
rangeObj.setEnd (range.startContainer, range.startOffset);