如何使用javascript触摸事件在触摸屏上选择文本

Posted

技术标签:

【中文标题】如何使用javascript触摸事件在触摸屏上选择文本【英文标题】:How to use javascript touch events to select text on touchscreen 【发布时间】:2021-07-20 21:10:29 【问题描述】:

我有这个带有 jQ​​uery 的 javascript 可以在连接了鼠标和键盘的计算机屏幕上完成这项工作:

开始在屏幕上选择文本:

   $("body").on("mousedown", ".myDiv", async function(e) 
           //do something
    );

当屏幕上的文本选择完成时:

$("body").on("mouseup",".myDiv", function(e) 
        //do something, e.g. windows.getSelection()        
    );

在计算机屏幕上,它看起来像这样:

在手机屏幕上看起来像:

在移动设备上,有两件事发生在电脑屏幕上:

两个用于修改选择的句柄 用于选择操作的菜单

如何获得与计算机屏幕上相同的结果,即如何在使用触摸向浏览器发出特定信号时模拟 mouseup 事件,我已完成选择?

我试过了:

 $("body").on("touchstart",".myDiv", function(e) 
        //do something, e.g. windows.getSelection()        
    );
 $("body").on("touchend",".myDiv", function(e) 
            //do something, e.g. windows.getSelection()        
        );

谢谢!

【问题讨论】:

【参考方案1】:

您正在寻找selectionchange 事件!

无论如何选择文本(通过鼠标、触摸、键盘或特殊设备),它都会检测选择的变化。

它不会告诉您选择了哪个元素(您必须手动确定它),也不会表明用户已完成选择,但每次选择更改时都会触发它(您可能想要在弹出窗口出现之前添加一些超时):

document.addEventListener("selectionchange", function(e) 
  //do something, e.g. windows.getSelection()        
  console.log("selectionchange")
);
<div class="myDiv">Some text that you can select</div>

【讨论】:

以上是关于如何使用javascript触摸事件在触摸屏上选择文本的主要内容,如果未能解决你的问题,请参考以下文章

Element UI - VueJS - 在 IOS 上选择输入双击错误

JavaScript中的Touch事件简介

JavaScript 触摸事件点击层下

如何在 UIScrollView 或 UIViewVontroller 的视图内绘制?

Javascript 触摸对象

使用javascript / jQuery将触摸事件应用于每次点击事件