我有一个按钮,这是应该触发一个自定义行为。所以我使用了Jquery的contextmenu
事件。Please see my fiddle。
目前我以这种方式绑定事件:
$( "#mybutton" ).contextmenu(function() {
alert( "Handler for .contextmenu() called." );
});
我也试着这样绑定它:
$( "#mybutton" ).on('contextmenu', function() {
alert( "Handler for .contextmenu() called." );
});
正如你将在我的fiddle中看到的,我通过使用以下命令禁用了longpress的默认ios行为:
body { -webkit-touch-callout: none !important; }
input { -webkit-user-select: none !important; }
我试了试我的小提琴:
- Chrome浏览器,Windows上的最新版本(使用右键单击和触摸)
- Android上的Chrome使用taphold
- Internet Explorer,Windows上的最新版本(使用右键单击和触摸)
- Opera,Windows上的最新版本(使用右键单击和触摸)
- Firefox,Windows上的最新版本(使用右键单击和触摸)
- Safari,在macOS Sierra上,(使用右键单击)
以上工作都按预期进行。不幸的是,这在我的iPad上的iOS/Safari上不起作用。当前的Safari版本是10.1.2
我试图通过将iPad连接到我的Mac并记录控制台输出来调试这一点。事件似乎永远不会触发。
我已经寻找了解决方案,但不幸的是,唯一的解决方案似乎要么使用jquery-mobile的taphold
,我想避免或写一个自定义的timer-based event handlers,这也不是一个非常干净的解决方案,imho。
有没有人有过类似的经历,也许找到了解决方案?
1条答案
按热度按时间mklgxw1f1#
我已经尝试了一些行为,这是一个小extran,我不能给予你一个确切的答案,试试这个代码也许
但是,根据我的经验,IOS和Safari总是做这些事情只是为了保持良好的用户体验,我建议你,不要依赖上下文菜单(至少在移动的设备上),而不是使用专用按钮打开html生成的菜单,就像典型的三点按钮一样,这是用户体验的问题。
祝你好运