How do you disable click events from the contextmenu event when using Ctrl+Click in Safari for Mac?

前端 未结 3 685
时光说笑
时光说笑 2020-12-10 14:19

When using ctrl+ click to fire a contextmenu event (Context.JS) in Safari on Mac OS 10.9, the mousedown/up/click events also fire. This causes the menu to be closed. The e

3条回答
  •  清歌不尽
    2020-12-10 14:46

    You could make use of the ctrlKey property of the MouseEvent :

    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;
    }
    hold ctrl+click in safari, chrome, etc

    So if you want to patch the context.js yourself, just add 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    });
    

    patched script : http://pastebin.com/6ySveRty

提交回复
热议问题