navigator.useragent引用在关闭编译的js中丢失

时间:2013-09-02 08:36:36

标签: javascript closures google-closure-compiler

我正在使用像

这样的简单正则表达式测试
is_safari_or_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);

在我的js中。用Closure编译器(高级优化)编译后,它不再工作了。它仍然给我正则表达式但navigator.useragent缺失。

注意,我没有使用闭包库,也没有意图在这一点上使用。我该如何保留这个测试?

js代码

var browser_type = new RegExp('(iPhone|iPod|iPad).*AppleWebKit', 'i');
function is_safari_or_uiwebview() {
    return browser_type.test(navigator.userAgent);
}
window['is_safari_or_uiwebview'] = is_safari_or_uiwebview;

已编译的代码

var l=/(iPhone|iPod|iPad).*AppleWebKit/i,l=/(iPhone|iPod|iPad).*AppleWebKit/i;function m(){return l.test(navigator.c)}window.is_safari_or_uiwebview=m;

1 个答案:

答案 0 :(得分:1)

简单解决方案:使用括号表示as explained in the documentation

navigator['userAgent']

但是,当我在http://closure-compiler.appspot.com/home中测试您的代码时,使用高级编译重命名属性名称。