Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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 禁用taphold默认事件,跨设备_Javascript_Android_Jquery_Mobile_Touch - Fatal编程技术网

Javascript 禁用taphold默认事件,跨设备

Javascript 禁用taphold默认事件,跨设备,javascript,android,jquery,mobile,touch,Javascript,Android,Jquery,Mobile,Touch,我正在努力禁用默认的taphold浏览器事件。我在谷歌上找不到任何帮助。我只有Android 4.4.4 mobile和Chrome开发工具可供测试。我尝试了CSS修复,比如webkit touch callout和其他,但显然它们不适用于Android,也不适用于Chrome开发工具。 我还尝试检测右键单击(e.button==2),但它不起作用 我想出了一个解决方案,但它解决了一个问题,又制造了另一个问题。我只想为所选锚定的“长按”事件提供自定义操作,不希望出现默认弹出窗口(在新选项卡中打开

我正在努力禁用默认的taphold浏览器事件。我在谷歌上找不到任何帮助。我只有Android 4.4.4 mobile和Chrome开发工具可供测试。我尝试了CSS修复,比如webkit touch callout和其他,但显然它们不适用于Android,也不适用于Chrome开发工具。 我还尝试检测右键单击(e.button==2),但它不起作用

我想出了一个解决方案,但它解决了一个问题,又制造了另一个问题。我只想为所选锚定的“长按”事件提供自定义操作,不希望出现默认弹出窗口(在新选项卡中打开,复制链接地址等) 这就是我所做的:

var timer;
var tap;

$("body").on("touchstart", my_selector, function(e) {
    e.preventDefault();
    timer = setTimeout(function() {
        alert('taphold!');
        tap=false;
    },500);
});

$("body").on("touchend", my_selector, function() {
    if(tap) alert('tap');
    else tap=true;
    clearTimeout(timer);
});
它成功禁用默认的taphold事件,并且上下文菜单不会出现。但是,它也会禁用有用的事件,例如刷卡。链接位于垂直菜单中,菜单高于屏幕,因此用户必须滚动它。如果他试图滚动,从锚点开始,它不会滚动,它会提醒“点击!”

有没有办法禁用taphold默认值,或者如何修复此代码,使其仅禁用tap事件并保持默认滑动事件处于启用状态

编辑:现在我考虑设置一个超时,如果指针在同一个位置100毫秒,那么阻止默认操作。然而,e.预防违约();在setTimeout回调中不起作用

现在我只想问一个最简单的例子。我可以在经过一定时间后(触摸仍在时)防止默认操作吗

这就是我的全部问题。 这不是我的密码,我是从


请注意,在上下滑动框时,滚动不起作用

我找到了解决办法。太简单了!我不知道有一个oncontextmenu活动。这解决了所有问题:

$("body").on("contextmenu", my_selector, function() { return false; });

我找到了解决办法。太简单了!我不知道有一个oncontextmenu活动。这解决了所有问题:

$("body").on("contextmenu", my_selector, function() { return false; });