javascript - window.getSelection().baseOffset 错误
问题描述
如果您选择下面从第一个字符开始的任何文本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>
解决方案
结果是正确的,你在 end<div id='main'data-alignment="center">
和之间正好有 5 个空格字符H
,这些将被计为偏移量。
为避免这种情况,您可以将 TextNode 包装在一个<span>
元素中,以便没有偏移。
此外,官方规范baseOffset
中仍然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>
推荐阅读
- postgresql - pg_dumpall | ssh 用户名@server 'cat > alldb.sql'
- python-3.x - Scrapy爬虫在增加spider并发的同时给出DNS查找错误
- python - 如何在 Python 中修复 UserWarning 和 DeprecationWarning
- reactjs - 如何检测刷新页面和路由变化?
- r - 如何修复“doParallel 包的 foreach 循环的 NULL 问题”
- excel - 如何对来自不同行的两个值求和并获得接近某个值的值的组合?
- reactjs - React Native - 在 componentWillUnmount 方法中取消所有订阅和异步任务
- php - 在 php mvc 中创建全局辅助函数
- javascript - 过滤 JSON 中的一个特定节点,显示直接父节点和所有子节点
- scala - 如何模式匹配 JsStrings 的 JsArray