参数无效-Edge浏览器中的Google Map错误

时间:2018-08-08 10:12:21

标签: javascript google-maps google-maps-api-3 ecmascript-6 microsoft-edge

我一直收到此错误

  

无效的参数

从Edge浏览器中的Google Map v3中获取。即使收到错误,其他所有内容都可以正常工作。仅当我尝试将光标移出地图右侧(在浏览器滚动条上)时,才会发生这种奇怪的行为。它仅在Edge中发生。

我已经创建了一个JSFiddle,它处于Google提到的原始状态。但是在那种情况下也会遇到同样的错误。我已经将this bug报告给了Google地图支持论坛,同时尝试从我认识的最大社区中找到解决方案。提前致谢。您可以查看下面的代码

function initMap() {
  var uluru = {lat: -25.344, lng: 131.036};
  var map = new google.maps.Map(
      document.getElementById('map'), {zoom: 4, center: uluru});
  var marker = new google.maps.Marker({position: uluru, map: map});
}

2 个答案:

答案 0 :(得分:5)

我能够重现该问题,这是我所发现的:

问题出现在边缘common.js文件中的以下代码中:

if ("undefined" != typeof a.compareDocumentPosition)
    return a == b || !!(a.compareDocumentPosition(b) & 16);

特别是compareDocumentPosition函数调用,因为它不喜欢参数b。实际功能块:

function (a, b) {
    if (!a || !b)
        return !1;
    if (a.contains && 1 == b.nodeType)
        return a == b || a.contains(b);
    if ("undefined" != typeof a.compareDocumentPosition)
        return a == b || !!(a.compareDocumentPosition(b) & 16);
    for (; b && a != b;)
        b = b.parentNode;
    return b == a;
};

每当地图容器上发生mouseout事件时,就会调用此块,并且参数a是地图容器元素,而b是滚动条对象。当您将鼠标移出地图并移至浏览器窗口的滚动条上时,所有其他浏览器都调用相同的方法,其中滚动条对象的nodeType为1,然后执行return a == b || a.contains(b);代码块。

但是,如果滚动条对象的边缘nodeTypeundefined,并且它执行return a == b || !!(a.compareDocumentPosition(b) & 16);代码块,并将滚动条对象传递给compareDocumentPosition函数调用,则该函数将记录无效的参数。在控制台上。

您可以看到我提交的here错误报告。

答案 1 :(得分:0)

我没有Edge ...,但是调用地图id="map"是常见的问题来源。查看是否可行(有意启用了控制台;只需忽略前三个错误并记录警告)。万一它起作用了……至少应该没有invalid argument错误的跟踪。

function initMap() {
  var uluru = {lat: -25.344, lng: 131.036};
  var map = new google.maps.Map(document.getElementById('map_canvas'), {mapTypeId: 'satellite', zoom: 13, center: uluru});
  var marker = new google.maps.Marker({position: uluru, map: map});
}
google.maps.event.addDomListener(window, "load", initMap);
html, body, #map_canvas {height: 100%; width: 100%; margin: 0px; padding: 0px;}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas"></div>