gpt4 book ai didi

javascript - execCommand ('insertHTML' ) 正在占用空间

转载 作者:行者123 更新时间:2023-11-30 19:07:51 27 4
gpt4 key购买 nike

在下面的代码中,我使用 execCommand('insertHTML') 突出显示了选定的文本

问题:

当我在下面选择第一个 selectme 时。它占用了 selectmeTest 之间的空间。但是当我选择第二个 selectme

时,没有出现同样的问题

document.addEventListener('mouseup', (event)=>{
const selection = window.getSelection().toString();
document.execCommand('insertHTML', false,
`<span class="bg-red">${selection}</span>`);
});
.bg-red{
background: red;
}
<div id="wrapper" contenteditable="true">
selectme <span class="bg-red">TEST</span>
selectme <span class="bg-red">TEST</span>
</div>

浏览器:

谷歌浏览器版本 78.0.3904.97(官方构建)(64 位)

下方 5 秒 GIF

enter image description here

最佳答案

我用另一种方式做到了

document.getElementById("wrapper").addEventListener('mouseup', (event)=>{
var select = window.getSelection();

//store selected text
var sel_txt = select.toString();

if(sel_txt){

//get ranges currently selected
var range = select.getRangeAt(0);

//remove range content from the document
range.deleteContents();

//create node for replace
var elm = document.createElement('span');
elm.className = "bg-red";
var textNode = document.createTextNode(sel_txt);
elm.appendChild(textNode);

//insert node
range.insertNode(elm);

//remove selection
select.removeAllRanges();
}
});
.bg-red{
background: red;
}
<div id="wrapper" contenteditable="true">
selectme <span class="bg-red">TEST</span>
selectme <span class="bg-red">TEST</span>
</div>

关于javascript - execCommand ('insertHTML' ) 正在占用空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797362/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com