我制作了一个脚本来注册拇指滚轮事件(MX Master 2S,如果你想知道的话)。但是,这个脚本在Chrome中运行得很好,但在Firefox(Quantum)中却没有。为什么会这样?
var expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
var regex = new RegExp(expression);
var elements = document.getElementsByClassName('pagination'); // get the elements
var search = (elements[0].innerHTML.match(regex));
//alert(search);
if(document.addEventListener){
document.addEventListener("mousewheel", MouseWheelHandler, false);
document.addEventListener("DOMMouseScroll", MouseWheelHandler, false);
} else {
document.attachEvent("onmousewheel", MouseWheelHandler);
}
function MouseWheelHandler(e) {
var e = window.event || e;
var ret = true;
if (e.wheelDelta) {
// Tilt to the left
if (e.wheelDeltaX < 0) {
str = window.location.toString();
strsplit = str.split('/');
preloc=Number(strsplit[4])+1;
if (preloc > 0) {
window.location.replace("https://somepage.com/page/"+preloc);}
prelocstr=preloc.toString();
if (prelocstr == "NaN") {
window.location.replace(search[0]); }
ret = false;
}
// Tilt to the right
if (e.wheelDeltaX > 0) {
str = window.location.toString();
strsplit = str.split('/');
preloc=Number(strsplit[4])-1;
if (preloc > 0) {
window.location.replace("https://somepage.com/page/"+preloc);}
ret = false;
}
}
event.returnValue = ret;
}
此脚本在Tampermonkey中制作。谁能指出我的错误?提前谢谢!
答案 0 :(得分:2)
处理鼠标滚轮事件的新标准是浏览器的标准:
https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent
https://developer.mozilla.org/en-US/docs/Web/Events/wheel
要使用此活动,请执行以下操作:
document.addEventListener("wheel", MouseWheelHandler);
并且不需要:
e = window.event || e
活动将在那里。
答案 1 :(得分:0)
只有DOMMouseScroll
适用于Firefox,但它使用不同的API。因此,您必须为Firefox编写单独的处理程序,而不是使用MouseWheelHandler
,或调整MouseWheelHandler
以支持两者。
正如kshetline所指出的那样,现在有了一个新标准,适用于所有现代浏览器:https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent。
其他两个选项在Firefox中不起作用,如下所述:
此功能不符合标准,不符合标准。不要 在面向Web的生产站点上使用它:它不会适用于所有人 用户。两者之间可能存在很大的不兼容性 实现和行为可能在未来发生变化。
来源:https://developer.mozilla.org/en-US/docs/Web/Events/mousewheel