我试图在不使用 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 ();
}
}
});
最佳答案
rangeObj.setStart (textNode, range.startOffset-1);
rangeObj.setEnd (textNode, range.startOffset);
添加以下内容而不是上面的行解决了我的问题。
rangeObj.setStart (range.startContainer, range.startOffset-1);
rangeObj.setEnd (range.startContainer, range.startOffset);
关于javascript - 如何从范围对象获取当前节点引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42564823/