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

Abi*_*aha 6 javascript google-maps google-maps-api-3 ecmascript-6 microsoft-edge

我一直在收到这个错误

无效的论点

来自Edge浏览器中的Google map v3.即使在收到错误后,其他所有工作都正常.只有当我尝试将光标移出地图到右侧(通过浏览器滚动)时才会发生这种奇怪的行为.它只发生在Edge.

我已经创建了一个JSFiddle,它像谷歌提到的那样处于原始状态.但在这种情况下我也得到同样的错误.我已经向谷歌地图支持论坛报告了这个错误,同时试图找到我所知道的最大社区的解决方案.提前致谢.您可以查看以下代码

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});
}
Run Code Online (Sandbox Code Playgroud)

Dip*_*hah 6

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

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

if ("undefined" != typeof a.compareDocumentPosition)
    return a == b || !!(a.compareDocumentPosition(b) & 16);
Run Code Online (Sandbox Code Playgroud)

特别是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;
};
Run Code Online (Sandbox Code Playgroud)

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

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

你可以看到我在这里提交的错误报告.