javascript - 在 Safari for Mac 中使用 Ctrl+Click 时如何禁用上下文菜单事件中的单击事件?

标签 javascript jquery macos dom safari

在 Mac OS 10.9 上的 Safari 中使用 ctrl+ click 触发上下文菜单事件 (Context.JS) 时,也会触发 mousedown/up/click 事件。这会导致菜单关闭。这些事件似乎彼此异步发生,因此 stopPropagation 不起作用,这似乎也会导致间歇性行为,有时没问题,有时则不然。

有没有其他人遇到过这个问题,如果你遇到过,你是如何解决/解决它的?

不幸的是,我无法向大众发布代码,但我希望它听起来很熟悉。

fiddle : http://jsfiddle.net/gnh2tuyj/

最佳答案

您可以使用 ctrlKey property鼠标事件的:

var div = document.querySelector('div');
div.addEventListener('click', function(e) {
  if (e.ctrlKey) return;
  e.preventDefault();
  alert('click!');
}, false);

div.addEventListener('contextmenu', function(e) {
  e.preventDefault();
  alert('context menu!');
}, false);
div {
  border: 1px solid red;
}
<div>hold ctrl+click in safari, chrome, etc</div>

所以如果你想修补context.js你自己,只需添加 if(ctrlKey) return; l24。

l23    $(document).on('click', 'html', function (e) {
l24    if(e.ctrlKey) return;
l25    $('.dropdown-context').fadeOut(options.fadeSpeed, function(){
l26     $('.dropdown-context').css({display:''}).find('.drop-left').removeClass('drop-left');
l27     });
l28    });

补丁脚本:http://pastebin.com/6ySveRty

关于javascript - 在 Safari for Mac 中使用 Ctrl+Click 时如何禁用上下文菜单事件中的单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26032971/

相关文章:

javascript - 如何从索引页重定向到其他页面

javascript - 'this' 在 Javascript 扩展类中返回未定义

javascript - 过滤两个对象数组

javascript - Codeigniter CSRF 保护与数据表 ajax url

c# - 如何使用 mono 从 Mac 上的命令行编译和运行带有 NUnit 测试的 C# 文件

编译器在 C 程序中抛出错误 "undefined symbol"

javascript - 在 setTimeout 中使用时,IE 参数未定义

jquery - 使用 div 高度作为 marginTop

javascript - 复选框更改事件记录罚款或折扣jquery

r - 什么是 '.R' 文件夹以及在哪里寻找它?