谷歌地图API严格遵守模式
Google Maps API strict mode compliance
作为一个研究项目的一部分,我目前正在调查使用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)允许您在谷歌对此采取任何行动时获得通知。
- 为什么我的JavaScript在Safari上的严格模式下不能正常工作
- 如果我使用或不使用“;使用严格的“;JS中的模式
- SyntaxError:'带有'语句在严格模式下无效
- ECMAScript 6的哪些特性意味着严格模式
- 为什么严格的模式会让如此简单的动作变得如此不同
- 在严格模式下不允许使用八进制文本
- AngularJS中的严格模式过滤器
- 为什么Chrome在“严格模式”下使用块内的功能时仍然保持沉默
- 如何在严格模式下实现以下JavaScript闭包
- 在严格模式下间接调用eval.x怎么了
- javascript严格模式下oop函数的全局初始化
- JS:两个或多个非严格模式下具有相同名称的对象属性
- SyntaxError:严格模式不允许在词法嵌套语句中声明函数
- 在Javascript严格模式下,您可以将参数分配给另一个变量
- 在[background:url({{XXX}})无重复中心的严格模式下,不允许分配只读属性
- JavaScript的严格模式是如何实现的
- 如何在严格模式下将附件下载为二进制数据
- j查询页面淡入淡出和严格模式
- 可以在没有副作用的情况下删除严格模式吗
- 谷歌地图API严格遵守模式