Jquery contextmenu事件无法在ios / Safari

时间:2017-07-28 07:22:01

标签: jquery html ios safari contextmenu

我有一个应该触发自定义行为的按钮。因此我正在使用Jquery的contextmenu事件。 Please see my fiddle

目前我以这种方式约束事件:

$( "#mybutton" ).contextmenu(function() {
  alert( "Handler for .contextmenu() called." );
});

我也试图像这样绑定它:

$( "#mybutton" ).on('contextmenu', function() {
  alert( "Handler for .contextmenu() called." );
});

正如您将在我的小提琴中看到的那样,我使用以下方法禁用了longpress的默认ios行为:

body { -webkit-touch-callout: none !important; }
input { -webkit-user-select: none !important; }

我测试了我的小提琴:

  • Chrome,Windows上的最新版本(使用右键单击并触摸)
  • 使用taphold在Android上安装Chrome浏览器
  • 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。

有没有人有类似的经历,也许找到了解决方案?

0 个答案:

没有答案