Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中模拟长按_Javascript_Android_Ios_Mobile - Fatal编程技术网

在Javascript中模拟长按

在Javascript中模拟长按,javascript,android,ios,mobile,Javascript,Android,Ios,Mobile,我有一个webapp,当用户点击一个字段时,里面的文本会高亮显示,供他复制。但是,在Android上,这不会触发复制上下文菜单的打开,因此用户必须自己选择文本 有没有一种方法可以通过编程触发长按事件,从而在移动浏览器上显示复制/粘贴上下文菜单?也许您可以通过使用jquery mobile的taphold事件来实现这一点 我知道这并不是你一直在寻找的解决方案,但这是一个在许多web应用程序中对我有效的解决方案。 我没有让用户自己复制/粘贴它,而是添加了一个复制按钮。 在很大程度上,我相信这会带来更

我有一个webapp,当用户点击一个字段时,里面的文本会高亮显示,供他复制。但是,在Android上,这不会触发复制上下文菜单的打开,因此用户必须自己选择文本


有没有一种方法可以通过编程触发长按事件,从而在移动浏览器上显示复制/粘贴上下文菜单?

也许您可以通过使用jquery mobile的taphold事件来实现这一点


我知道这并不是你一直在寻找的解决方案,但这是一个在许多web应用程序中对我有效的解决方案。 我没有让用户自己复制/粘贴它,而是添加了一个复制按钮。 在很大程度上,我相信这会带来更好的用户体验

有几个库可以做到这一点,占用的空间非常小,不依赖于它


我已经使用了一段时间,它在移动设备上也很好用。

我们可以使用ecma6 javascript来检测按键和触摸事件。对于不同的事件,有许多不同的处理程序

当用户触摸/按键/单击某个元素时,我们可以通过多种方式检测它,但对于您的精确查询,触摸/单击事件由两个不同的操作组成:ontouchstart和ontouchend

这基本上意味着当ontouchend没有被触发时,用户通过触摸来握住元素,这是一个长时间的触摸/点击

下面的示例使用onmouseover、onmousleave、ontouchstart和ontouchend事件

shot.onmouseover=函数{ console.logMouse操作已启动! } shot.onmouseleave=函数{ console.logMouse操作终止! } shot.ontouchstart=函数{ console.logTouch操作已启动! } shot.ontouchend=函数{ console.logTouch操作已终止! } 镜头{宽度:100%;最小高度:300px;背景:红色}
Touch以下示例模拟Android长按。将长按后的操作置于setTimeout内:

无功定时器; //长篇大论 恒速=1000//时间1000ms=1s 常数mouseDown==>{ 计时器=setTimeoutfunction{ //在此处插入函数 提醒你在这里的功能!; },节奏; }; 常数mouseUp==>{ cleartimeoutimer; };
长时间触摸我

顺便提一下,如果不使用物理电话,我如何测试这是否有效?我认为如果您在要测试taphold的元素上按住鼠标的单击按钮超过750毫秒,您应该能够在浏览器中测试它。taphold不会模拟长按,它只允许您指定在长按事件发生时调用的回调。如何使用touchstart和touchend创建自定义事件?在Chrome DevTools中,这很容易。您应该尝试一下。我建议您查看对的3个响应。他们正在使用jquery。如果您正在寻找一致且性能良好的解决方案,请避免使用jquery。今天晚些时候我可以提供一些示例功能来解决这个问题。当谈到iOS时,这是不完整的。我不确定Android。要长按图像,也不能移动手指。因此,我认为还应该跟踪ontouchmove事件。要测试这一点,请转到移动网络上的任何图像,轻按并按住图像。如果不移动手指,几秒钟后就会出现保存表。如果你真的移动,它就不会出现。