谷歌地图API严格遵守模式

Google Maps API strict mode compliance

本文关键字:模式 严格遵守 API 谷歌地图      更新时间:2023-09-26

作为一个研究项目的一部分,我目前正在调查使用Google Caja项目的Secure EcmaScript实现的第三方脚本的沙盒(https://code.google.com/p/es-lab/wiki/SecureEcmaScript,https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/ses)。我设法在这样一个沙箱中执行了谷歌地图应用程序,即谷歌地图API v3(https://maps.googleapis.com/maps/api/js)并且随后加载的脚本在受控环境中执行。然而,为了实现这一点,我不得不对谷歌地图应用程序加载的第一个脚本进行两次修改(在撰写本文时https://maps.gstatic.com/intl/en_us/mapfiles/api-3/8/2/main.js)。如果不进行修改,应用程序将无法运行,因为代码不符合ECMAScript 5严格模式。具体来说,以下代码片段出现在文件中的某个位置:

R.cf=function(){return this}().navigator&&-1!=ha.userAgent[Mc]()[tb]("msie");

在严格模式下,function(){return this}返回undefined,导致"navigator"的属性访问引发错误。在非严格模式下,函数将返回全局"window"对象。我又发现了一个这样的情况在严格模式下导致错误的例子。

起初,我发现谷歌地图应用程序不符合严格的模式,这让我感到惊讶。据我所知,使用严格模式只有好处。然而,我认为原始代码可能是严格的模式兼容的,但缩小编译器所做的转换消除了兼容性。从安全角度来看,能够以可控的方式执行脚本是非常有用的。例如,当外部脚本被破坏并且其功能被更改时,这将防止安全违规。因此,我认为能够在这样的沙箱中执行谷歌地图应用程序将非常有用。然而,由于Secure EcmaScript的Google Caja实现依赖于严格模式施加的限制来保证其功能,因此它需要一个符合严格模式的Google Maps应用程序。

所以我的问题是:谷歌地图应用程序的严格模式兼容版本会很快推出吗?或者,当前的谷歌地图应用程序会被兼容的应用程序取代吗?

谨致问候,

Yoran

看来您应该将其添加到地图API问题跟踪器中

http://code.google.com/p/gmaps-api-issues/

注意,谷歌很少对升级功能发表评论。但通过添加到问题跟踪器。您1)允许其他开发人员对该建议进行"投票",从而增加其对谷歌开发人员的"重要性";2)允许您在谷歌对此采取任何行动时获得通知。