window.getSelectionbaseOffset错误

问题描述

如果您在下面的第一个字符H开头选择任何文本,则会显示所选内容baSEOffset5。在我的现实生活中,它说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>