滚动会导致 IE9 中的页面滚动和地图缩放(Google 地图 v2)

发布于 2024-11-06 15:50:33 字数 268 浏览 0 评论 0原文

在 Internet Explorer 9 中,使用 Google Maps API v2(已弃用),使用滚轮缩放也会导致页面滚动。有谁知道这个问题的解决方法? (遗憾的是,目前还无法将我们的代码库升级到 v3。)早期版本的 Internet Explorer 中不会出现此行为。

这是一个测试页面

In Internet Explorer 9, using the Google Maps API v2 (which is deprecated), zooming with the scroll wheel also causes the page to scroll. Does anyone know of a workaround for this issue? (Upgrading our codebase to v3 is not yet possible, unfortunately.) This behavior does not occur in earlier versions of Internet Explorer.

Here is a test page.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

西瓜 2024-11-13 15:50:33

网上似乎有很多人有同样的问题,但我没有找到解决方案。这是我的:

由于不可滚动组件不会引发滚动事件,并且该事件在文档对象上是不可取消的,因此无法使用标准 DOM。幸运的是,有一个名为“mousewheel”的 jQuery 小插件,它为 jQuery 添加了“mousewheel”和“unmousewheel”事件绑定功能。 “mousewheel”事件调用的函数可以返回 false 以取消它,然后文档不会接收它。因此,我测试了 IE9 或更高版本,并在必要时下载这个小插件,将其应用到保存地图的 div 上。

Many people seem to have the same problem around the net but I found no solutions posted. So here is mine:

Since non-scrollable components do not raise the scroll event and that event is non-cancelable on the document object, the standard DOM could not be used. Fortunately, there is a little jQuery plugin called "mousewheel", which adds "mousewheel" and "unmousewheel" event binding functions to jQuery. The function called by "mousewheel" event can return false to cancel it and the document then does not receive it. So I test for IE9 or bigger and download this little plugin if necessary, applying it to the div holding the map.

星光不落少年眉 2024-11-13 15:50:33

请尝试

$('#map').mouseover( function(){ 
    document.body.style.overflow = 'hidden';
    $('#wrap').css('margin-right','17px');
    console.log('mouse -> map , ' , document.body.scroll, ' / ' , document.body.style.overflow );   
} );

$('#map').mouseout( function(){ 
    document.body.style.overflow = 'auto';
    $('#wrap').css('margin-right','0px');
    console.log('mouse map -> , ' ,  document.body.scroll, ' / ' , document.body.style.overflow);  
} );

此代码隐藏滚动条。我发现这只是在 IE 中禁用滚动的一种方法。
document.body.scroll = "no" 不起作用。 ( IE9 )

#map - 是带有谷歌地图的 div,
#wrapper - 是包含所有页面的 div。
$('#wrap').css('margin-right','17px'); // 只是为了在左侧滚动条隐藏/显示时保持页面宽度

Please try

$('#map').mouseover( function(){ 
    document.body.style.overflow = 'hidden';
    $('#wrap').css('margin-right','17px');
    console.log('mouse -> map , ' , document.body.scroll, ' / ' , document.body.style.overflow );   
} );

$('#map').mouseout( function(){ 
    document.body.style.overflow = 'auto';
    $('#wrap').css('margin-right','0px');
    console.log('mouse map -> , ' ,  document.body.scroll, ' / ' , document.body.style.overflow);  
} );

This code hide scrollbars. I found that it is only one way to disable scrolling in IE.
document.body.scroll = "no" don't work. ( IE9 )

The #map - is div with google map,
the #wraper - is div with all page.
$('#wrap').css('margin-right','17px'); // just to keep page width when left scroll bar hided/showed

信愁 2024-11-13 15:50:33

要使用 PrototypeJS 1.7 解决此问题(如 Marek 和 theazureshadow 建议),您可以在 IE9 上使用:

$(gMapDiv).observe('mousewheel', function(event){
    event.stop();
});

To fix this problem with PrototypeJS 1.7 (like Marek and theazureshadow suggest) you can use on IE9:

$(gMapDiv).observe('mousewheel', function(event){
    event.stop();
});
谁对谁错谁最难过 2024-11-13 15:50:33

我遇到了同样的问题,并通过以下方式解决:
当光标位于地图元素上并且滚轮移动时,将禁用整页滚动。只有地图会放大或缩小

$('#map').live("mouseover",function() {
  $('#map').mousewheel(function(event) {    
  stopWheel(event);

  });
})

function stopWheel(e){
if(!e){ /* IE7, IE8, Chrome, Safari */ 
    e = window.event; 
}
if(e.preventDefault) { /* Chrome, Safari, Firefox */ 
    e.preventDefault(); 
} 
e.returnValue = false; /* IE7, IE8 */
}

I had the same problem, and solve it this way:
When cursor is over map element and scrollwheel moves, whole-page-scrolling will be disabled. Only map will zoom in or out

$('#map').live("mouseover",function() {
  $('#map').mousewheel(function(event) {    
  stopWheel(event);

  });
})

function stopWheel(e){
if(!e){ /* IE7, IE8, Chrome, Safari */ 
    e = window.event; 
}
if(e.preventDefault) { /* Chrome, Safari, Firefox */ 
    e.preventDefault(); 
} 
e.returnValue = false; /* IE7, IE8 */
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文