【问题标题】:Window on scroll function breaks embedded Google Maps滚动功能窗口会破坏嵌入式谷歌地图
【发布时间】:2018-03-16 14:09:55
【问题描述】:

我监听我的网页上的滚动,以便向我的侧边栏添加一个类,使其位置:固定。

但是,我还在同一页面上嵌入了 Google 地图。通常,当您在地图画布上滚动时,它会显示带有文本“使用 cntrl + 滚动缩放地图”的灰色背景。

问题在于 Google 地图仍会显示该文本,但无论如何都会缩放地图。尝试禁用我的滚动侦听器,这解决了问题,但我需要该功能。

我的功能:

$(window).on("scroll", function(e) {
if (window.pageYOffset > 136) {
    $('.sidebar').addClass("fixed");
} else {
    $('.sidebar').removeClass("fixed");
}
});

我怎样才能仍然使用此功能并让 Google-Maps embed 正常工作?

谢谢!

【问题讨论】:

  • 尝试使用 $(document).on("scroll", function(e) { if (window.pageYOffset > 136) { $('.sidebar').addClass("fixed"); } else { $('.sidebar').removeClass("fixed"); } });
  • 遗憾的是仍然遇到同样的问题
  • 我在JSBin上做了一个基本的例子。当我滚动时,侧边栏变得固定并随着页面向下滚动。如果我在光标位于地图上时滚动,它会显示消息“使用 ctrl + 滚动来缩放地图”并且地图本身不会被缩放。您能否修改代码并在此处粘贴指向它的链接以显示您遇到的错误?

标签: javascript jquery google-maps


【解决方案1】:

我想我终于解决了!试试这个

$('body, body *').on('mouseover', function(e) { 
if(e.target === e.currentTarget) {
    currentElement = $(this);
    if (currentElement != Yourgooglemapsellement){
      $(window).on("scroll", function(e) {
      if (window.pageYOffset > 136) {
          $('.sidebar').addClass("fixed");
      } else {
          $('.sidebar').removeClass("fixed");
      }
      });          
    }
  }
 });

【讨论】:

  • 非常感谢您抽出宝贵时间!但是,仍然遇到问题。我认为它没有在 mapselement 上正确注册鼠标悬停(尝试添加一个 'else{ console.log('map')}'。尝试通过 $('body').find('#map'); 和 $ ('#map'); 直接
  • 你有 iframe 中的地图吗?如果是这样,将 id 设置为 iframe 并将 currenteElement id 与 iframe id 进行比较
猜你喜欢
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
相关资源
最近更新 更多