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