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