在CTRL + MOUSEWHEEL事件

我被要求为我们的页面网站实现ctrl + mousewheel事件,以便在用户放大或缩小时更改图像偏移。 我发现这个旧答案使用javascript覆盖浏览器CTRL +(WHEEL)SCROLL,我试图做同样的事情。 我为实现下载了jQuery鼠标滚轮插件 ,这是我的代码:

var isCtrl = false; $(document).on('keydown keyup', function(e) { if (e.which === 17) { isCtrl = e.type === 'keydown' ? true : false; } }).on('mousewheel', function(e, delta) { // `delta` will be the distance that the page would have scrolled; // might be useful for increasing the SVG size, might not if (isCtrl) { e.preventDefault(); alert('wheel'); } }); 

事件可以单独运行,但是如果我按住CTRL按钮并转动鼠标,则轮子事件不会触发。 有没有人有更好的解决方案或可能是我做错了什么? 感谢帮助

小提琴 ,为了使其工作,您必须先在result框中单击才能尝试。

 $(window).bind('mousewheel DOMMouseScroll', function(event) { if(event.ctrlKey == true) { event.preventDefault(); if(event.originalEvent.detail > 0) { console.log('Down'); }else { console.log('Up'); } } }); 

要检查是否单击了ctrl key ,事件已经提供了执行此操作的方法。 试试这个:

 .on('mousewheel', function(e) { if (e.ctrlKey) { e.preventDefault(); alert('wheel'); } }); 

这也适用于e.shiftKeye.altKey等。我只会听滚动事件,我会检查ctrlKey是否关闭。