0

我添加了 2 个 EventListener(s) 以控制滚动并使其在 Chrome 上流畅流畅(尤其是),默认情况下它具有可怕的行为。

if (window.addEventListener) window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;

var time = 1300;
var distance = 270;

function wheel(event) {
    if (event.wheelDelta) delta = event.wheelDelta / 120;
    else if (event.detail) delta = -event.detail / 3;

    handle();
    if (event.preventDefault) event.preventDefault();
    event.returnValue = false;
}

function handle() {

    $('html, body').stop().animate({
        scrollTop: $(window).scrollTop() - (distance * delta)
    }, time);
}


$(document).keydown(function (e) {

    switch (e.which) {
        //up
        case 38:
            $('html, body').stop().animate({
                scrollTop: $(window).scrollTop() - distance
            }, time);
            break;

            //down
        case 40:
            $('html, body').stop().animate({
                scrollTop: $(window).scrollTop() + distance
            }, time);
            break;
    }
});

除了我需要添加 Google Maps API v3 地图外,一切都运行良好。它还有另一个 EventListener,当鼠标悬停在地图上并且您使用鼠标滚轮时,它会放大和缩小。当鼠标悬停在地图上时,如何禁用我的脚本?这是我的页面的链接(你可以看到行为),现场直播:http ://www.rendezvousroma.it/new/contatti.php

4

2 回答 2

0

(我不确定我是否正确理解了这个问题)

对我来说,当鼠标悬停在地图上时,您的脚本根本不起作用。当我在地图上使用鼠标滚轮时,地图将被缩放但页面不会滚动(我想这是所需的行为)

当您在地图上时,只有当前正在运行的动画队列会滚动页面。当这是您要避免的情况时,请观察mouseover地图的 -event 并停止动画:

  google.maps.event.addListener(map,'mouseover',function(e){
    $('html, body').stop();
  });

要防止页面在 Firefox 中滚动,请添加以下内容:

  google.maps.event.addDomListener(map.getDiv(),'DOMMouseScroll',function(e){
    e.stopPropagation();
  });

它应该防止事件冒泡到文档。

于 2013-10-04T18:11:32.897 回答
0

把这个放在div上:style="user-select: none; pointer-events: none;"

于 2018-05-15T17:27:18.937 回答