Why does middle-click not trigger 'click' in several cases?

后端 未结 3 481
面向向阳花
面向向阳花 2020-12-18 21:57

Here\'s a JSFiddle of the behavior I\'m seeing, relating to middle-click and the click event in Chrome and FF.

\'click\' kinda sorta works

3条回答
  •  南笙
    南笙 (楼主)
    2020-12-18 22:37

    I've build a factory for creating Middle mouse click handlers using vanilla JS and working in latest Firefox and Chrome:

    const MiddleClickHandlerFactory = (node, handlerFn) => {
      node.addEventListener('mousedown', e => {
        if (e.button !== 1) return;
        e.preventDefault();   // stop default scrolling crap! Instead install ScrollAnywhere!
    
        const originalTarget = e.target;
        document.addEventListener('mouseup', e => {   // register on DOCUMENT to be sure it will fire even if we release it somewhere else
           if (e.target.isSameNode(originalTarget)) handlerFn(e);
        }, {capture: true, once: true, passive: true});
      }, true)
    };
    

提交回复
热议问题