Internet Maps Quirks模式中的Google Maps API v3.19已损坏

问题描述 投票:8回答:9

2015年2月17日,Google Maps API 3.19版成为默认地图'发布'(请参阅https://code.google.com/p/gmaps-api-issues/wiki/JavascriptMapsAPIv3Changelog)。当使用quirks mode时,该版本似乎在Internet Explorer中引起问题,正如我从受此问题影响的应用程序生成的以下测试页所证明的那样(因此这可能包含的代码多于此处所需的代码):

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Google Maps Test Page</title>
</head>
<body style="margin:0; padding:0">
    <!-- Adding ?v=3.18 onto the end of this URL will 'fix' the problem -->
    <script src='http://maps.googleapis.com/maps/api/js' type='text/javascript'></script>
    <script type='text/javascript'>
    function initialize() {
        top.google.maps.visualRefresh=true;
        var mapOptions = {
            zoom: 13,
            center: new google.maps.LatLng(51.5072, 0.1275),
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            scaleControl: true,
            overviewMapControl: true
        };
        this._map = new google.maps.Map(document.getElementById('myMap'), mapOptions);  
    }

    google.maps.event.addDomListener(window, 'load', initialize);
    </script>

    <div id="myMap" style="width:500px;height:500px;position:relative;"></div>
 </body>
 </html>

Firefox和Chrome都会正确显示可用的地图,而IE会在Google地图代码中引发错误,该错误显示“无法获取显示属性”。无效的论点。'我已经尝试调试代码,但它被混淆了,这使它成为一个痛苦的挑战。

强制将版本恢复到上一个​​“冻结”版本(3.18)暂时解决了问题,但这只是一个临时解决方案。

任何人都可以建议除了向谷歌报告之外的解决方案并希望他们修复它吗?


附加说明:

在我写的时候,我注意到这里的信息https://code.google.com/p/gmaps-api-issues/wiki/JavascriptMapsAPIv3Changelog说这些版本是:

Experimental: 3.20
Release: 3.19
Frozen: 3.18 

版本3.17将被删除。 3.17或任何先前版本的请求现在将提供3.18版本的版本

虽然这个页面https://developers.google.com/maps/documentation/javascript/basics#Versioning说(在页面的底部):

Version 3.18 Reference (Release)
Version 3.19 Reference (Experimental)
Version 3.17 Reference (Frozen)
Versions 3.0 - 3.16 have been retired.

这是相当令人困惑的,但我认为Changelog链接是更新的信息来源。这种差异让我困惑,所以我认为值得分享观察。


更新20-Feb-15:

昨天谷歌证实这是一个Bug - 请参阅https://code.google.com/p/gmaps-api-issues/issues/detail?id=7675 - 并建议“我们正在寻找解决方案。”

感谢您的意见和建议,但到目前为止,我还没有找到一个可以使我的应用程序完全工作的工作,因为其他页面组件依赖于怪癖模式,创建了大量工作以使整个工作再次工作。我希望谷歌的注意力能为我解决这个问题。


更新21日至2月15日:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=7675现在表示'将在下周部署一个修复程序'。

javascript google-maps
9个回答
10
投票

今天在我刚刚继承的网络应用程序中找到了同样的问题。由于某些原因,以前的开发人员迫使IE进入怪癖(ie7)模式,谷歌api问题今天开始。我通过更改html head部分更新了主html页面以使用IE边缘模式

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
 <head>
    <meta http-equiv="X-UA-Compatible" content="IE=7" /> 
 .....

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
 <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
.....

(如果你错过它,添加ie-edge meta ...行)

到目前为止它已经修好了。

现在找出为什么以前的开发人员强迫IE7模式....


4
投票

已解决:与Win8和XP中的IE8(XP),IE9(Win7)和兼容模式有同样的问题。我添加了版本号,瞧!固定。

http://maps.googleapis.com/maps/api/js?V = 3&关键= ...

指定v = 3会强制稳定释放。我没有这个版本标志的旧代码被谷歌解释为我想要的实验版本,我从来不想要我的生产服务器。

仅供参考,我使用<!DOCTYPE HTML PUBLIC“ - // W3C // DTD HTML 4.01 Transitional // EN”>


1
投票

我们正在使用GMLib Google Maps delphi组件,我们遇到了同样的问题。 GMLib组件使用内部的TWebBrowser组件。

在GMLib组件的资源文件中,我们找到了一个map.html文件。我们在html文件的部分添加了以下行。

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

然后我们将资源文件重新编译到组件中,重新编译delphi项目并且它工作正常。

我想这是使用相对不受支持的免费组件的缺点之一。

我们现在正在考虑转向使用谷歌地图组件支付的商业广告,以降低再次发生这种情况的风险。


0
投票

在我的情况下(.net 4 visual c#与webbrowser集成)来修复这个问题我只是添加&v = 3似乎如果你没有指定版本它将使用实验的...奇怪。


0
投票

我在使用TWebBroser的Delphi中有一个应用程序,这是我找到的临时解决方案,但不是100%因为要解决这个问题我必须在Windows上添加一个Key,使用regedit。强制IE在我创建的Key上通知的版本中进行模拟,为了更好地理解,请查看此链接https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx中的项目Browser Emulation。此解决方案仅在安装了Key中声明的IE版本时才有效。


0
投票

我们在使用标准.net WebBrowser控件的C#程序中也遇到了同样的问题。

我们还通过添加线来解决问题

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

请注意,它在使用Internet Explorer 7的Vista配置上不起作用,但在安装IE 9之后可以正常工作(安装Service Pack1,Service Pack 2,2个微软修正补丁以及最终IE9本身超过3个小时)。


0
投票

我很高兴地说Google以非常积极的方式回应了这个问题;他们很快把它归类为一个bug,建议他们正在研究它,今天我再次测试,看到'怪癖'问题不再存在,我的应用程序再次出现了问题。

我问的问题是“除了向谷歌报告这个问题之外,还有人可以提出解决方案并希望他们解决这个问题吗?”我看到这个问题的应用程序(显然)严重依赖于quirks模式,因此我在尝试删除该依赖项时看到了页面上其他组件的许多问题 - 即问题变得更大。因此谷歌解决这个问题确实是唯一真正对我有用的答案,我很高兴他们这样做了。

感谢大家的帮助和贡献。


0
投票

在我的情况下,IE 11没有响应谷歌地图....我的解决方案是:第一点:

添加标题:

第二点:

添加JS V3:

问候


-1
投票

这很好用

< script src="https://maps.googleapis.com/maps/api/js&v=3.18" type="text/javascript"></script>

这不

< script type="text/javascript" src="https://maps.googleapis.com/maps/api/js&v=3.18"</script>
© www.soinside.com 2019 - 2024. All rights reserved.