map.events.register("mousewheel", null, function(){}) 無效,無法捕獲滾輪事件。
OpenLayers 2 中滾輪事件名稱區分大小寫,且部分瀏覽器使用 DOMMouseScroll(Firefox 早期版本)。
// 兼容寫法:同時註冊 mousewheel 和 DOMMouseScroll
map.events.register("mousewheel", map, onMouseWheel);
map.events.register("DOMMouseScroll", map, onMouseWheel); // Firefox 兼容
function onMouseWheel(evt) {
var delta = evt.wheelDelta ? evt.wheelDelta/120 : -evt.detail/3;
if (delta > 0) {
map.zoomIn(); // 向上滾動放大
} else {
map.zoomOut(); // 向下滾動縮小
}
OpenLayers.Event.stop(evt); // 阻止頁面默認滾動
}
"mousewheel"(非 "mousewheel" 全小寫)。map 作為 this 上下文,便於訪問地圖對象。OpenLayers.Event.stop(evt) 阻止事件冒泡與默認行為。OpenLayers 2 已停止維護,新項目建議使用 OpenLayers 6+ (ol),事件綁定更簡潔:
map.on('wheel', function(evt) {
// evt 是原生 WheelEvent
});