当前位置: 首页 > article >正文

【前端基础】如何判断鼠标选中文本的方向

鼠标选中文本的方向,分两种,从左往右,和从右往左。其中涉及到选中区域可能跨行的问题,稍微有点复杂。经过苦思冥想终于找到一个比较完美的方法判断鼠标选择的方向,亲们,有没有简单的办法可以分享给我!

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>文本编辑器</title>
    <style>
        #editor {
            border: 1px solid #ccc;
            min-height: 200px;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div id="editor" contenteditable="true">
        我是一段测试文本
    </div>

    <script>
        document.addEventListener('mouseup', () => {
            const s = window.getSelection();
            if (s.toString().length > 0) {
                const range = s.getRangeAt(0)
                const endContainer = range.endContainer
                // range不分前后
                const selectedNode = endContainer
                if(s.anchorNode == s.focusNode) {
                	if(s.anchorOffset > s.focusOffset) {
                    	leftToRight = false;
                	}else {
                    	leftToRight = true;
                    }
                } else if(selectedNode == s.anchorNode) {
                    leftToRight = false;
                } else if(selectedNode == s.focusNode) {
                    leftToRight = true;
                }
                console.log('鼠标选择的方向:')
                console.log(leftToRight ? '从左到右' : '从右到左')
            }
        });
    </script>
</body>
</html>

http://www.kler.cn/a/370449.html

相关文章:

  • 【专题二 二叉树中的深搜】98. 验证二叉搜索树
  • 设计和优化用于 AR、HUD 和高级显示系统的表面浮雕光栅
  • 认识 MySQL 和 Redis 的数据一致性问题
  • 如何使用C#与SQL Server数据库进行交互
  • Android 项目依赖冲突问题:Duplicate class found in modules
  • AI 大爆发时代,音视频未来路在何方?
  • linux tracepoint
  • x3daudio17dll丢失是什么原因?如何重新安装
  • Centos7.9编译安装Python3.12
  • 如何在Linux下安装和配置Docker
  • 七,Linux基础环境搭建(CentOS7)- 安装Scala和Spark
  • Ubuntu 20.04 安装 OpenCV 和 OpenCV_contrib 教程
  • 计算机网络关键名词中英对照
  • WebGIS开发之编辑功能(分割、融合、捕捉、追踪)
  • 【QT】HTTP服务器
  • 数据挖掘:电商会员价值分析模型方案
  • txt数据转为pdf格式并使用base64解密输出
  • 【MATLAB源码-第194期】基于matlab的MB-OFDM仿真,超宽带(UWB)无线传输。对比LS/DFT及其改进算法。
  • Cmake Error:could not find any instance of Visual Studio.
  • 使用Git进行团队协作开发
  • (1)程序设计与数据结构连续剧
  • flex常用固定搭配
  • JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果
  • linux中各目录作用及介绍
  • c++中的this指针
  • Uniapp如何处理后端返回图片流验证码