问题描述
如果您在下面的第一个字符H
开头选择任何文本,则会显示所选内容的baSEOffset
为5
。在我的现实生活中,它说7
。我该如何纠正?
setInterval(()=>{
console.log(window.getSelection().baSEOffset);
},250);
<!DOCTYPE html>
<html>
<body>
<div id='main'data-alignment="center">
Hello World!
</div>
</body>
</html>
解决方法
结果是正确的,您在<div id='main'data-alignment="center">
和H
的末尾之间恰好有5个空格字符,这些字符将被视为偏移量。
为避免这种情况,可以将TextNode包裹在<span>
元素中,以确保没有偏移量。
此外,baseOffset
是 still ,不在官方规格中,最好使用anchorOffset
,我认为它的作用大致相同(但在所有情况下均受支持)浏览器)。
document.onselectionchange = ()=>{
console.log(window.getSelection().anchorOffset);
};
<!DOCTYPE html>
<html>
<body>
<div id='main'data-alignment="center">
<span>Hello World!</span>
</div>
</body>
</html>