0

次のような単純な正規表現テストを使用していました

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;
4

1 に答える 1

1

簡単な解決策:ドキュメントで説明されているように、ブラケット表記を使用します。

navigator['userAgent']

しかし、 http://closure-compiler.appspot.com/homeでコードをテストすると、高度なコンパイルでプロパティ名の名前が変更されません。

于 2013-09-02T09:03:19.573 に答える