2013-09-02 2 views
0

Я использовал простой тест регулярок какnavigator.userAgent ссылка теряется в закрывающей скомпилирована JS

is_safari_or_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent); 

в моих JS. После компиляции с компилятором Closure (расширенная оптимизация) он больше не работает. Он по-прежнему дает мне регулярное выражение, но навигатор отсутствует.

Обратите внимание, что я не использую библиотеку закрытий и не намерен использовать в этой точке. Как я могу сохранить этот тест?

код расслоение плотной

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

Простое решение: Используйте кронштейн обозначения, as explained in the documentation.

navigator['userAgent'] 

НО, когда я проверить свой код в http://closure-compiler.appspot.com/home, он делает не переименовать имя свойства с расширенной компиляции.

+0

спасибо! от этого не получилось. теперь это работает. –

+0

Похоже, что некоторые внешние экземпляры отсутствуют, потому что это свойство не следует переименовывать. –

+1

@ Chad: Я думал то же самое. Я думал, что компилятор по умолчанию использует эти «стандартные» экстерны. –

Смежные вопросы