javascript - 谷歌浏览器 84 + 谷歌地图信息窗口 : Prevent webpage jump when clicking close button

标签 javascript google-chrome google-maps google-maps-api-3

在使用 JavaScript API 关闭嵌入在网页中的 Google Map 中的 InfoWindow 时,Google Chrome v84 中似乎有一个奇怪的行为:
每当页面没有滚动到顶部时,单击 InfoWindow 上的关闭按钮会使页面的滚动位置跳转 15px下。
这在版本 83 及更低版本中没有发生。

  • 跟踪器中的新问题:https://issuetracker.google.com/issues/163214518
  • JSFiddle 演示:http://jsfiddle.net/upsidown/hb1dx5a3/

  • 这是一个简单的可重现示例。向下滚动页面直到 map 在视口(viewport)中,单击标记,关闭信息窗口,页面将向下滚动15px .

    function initialize() {
    
      const mapOptions = {
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        center: new google.maps.LatLng(0, 0)
      };
    
      const map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
    
      const marker = new google.maps.Marker({
        position: new google.maps.LatLng(0, 0),
        map: map,
        title: 'Nothing here'
      });
    
      const infowindow = new google.maps.InfoWindow({
        content: 'Hello World'
      });
    
      google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
      });
    
      google.maps.event.addListener(infowindow, 'closeclick', function() {
        displayVerticalOffset();
      });
    
      window.onscroll = function() {
        displayVerticalOffset();
      };
    }
    
    function displayVerticalOffset() {
      document.getElementById('pageYOffset').innerHTML = 'Vertical offset: ' + window.pageYOffset + 'px'
    }
    #map-canvas {
      margin-top: 800px;
      height: 180px;
      width: 180px;
    }
    
    #pageYOffset {
      margin-bottom: 800px;
    }
    <div id="map-canvas"></div>
    <div id="pageYOffset"></div>
    
    <!-- Replace the value of the key parameter with your own API key. -->
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&callback=initialize" async defer></script>

    最佳答案

    将溢出 anchor :无添加到父级,这里是

    #map-canvas {
      overflow-anchor:none;
    }
    

    关于javascript - 谷歌浏览器 84 + 谷歌地图信息窗口 : Prevent webpage jump when clicking close button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63315872/

    相关文章:

    javascript - 为什么 Google Chrome 浏览器的 Math.random 数字生成器不是 *that* 随机数?

    html - 单选按钮在 Chrome v18 和 IE9 中不起作用

    javascript - 来自 set_at 事件的谷歌地图可编辑多边形过滤器拖动事件

    javascript - asp.net 如何自动启用浏览器位置设置

    javascript - Backbone Undefined 不是函数错误

    javascript - 在 Gatsbyjs 中将 csv 文件转换为 json

    javascript - 关闭 Bootstrap 模式弹出窗口时调用方法

    javascript - 当 Chrome 中的选项卡处于非事件状态时,如何使 setInterval 也起作用?

    ios - 如何使用经纬度坐标计算谷歌地图上两条路径线之间的角度

    javascript - 如何获取html文档头中的脚本列表