2011-01-20 2 views
0

Любые идеи относительно того, почему следующее не работает ни для одной из бета-версий IE9? IE8 штраф (или режим работы совместимости IE9):Regex не работает в IE9

if(b.msie){ 
    b.ver = /MSIE (\d+(.\d+)?)/.exec(ua)[1]; 
}else if(b.mozilla){ 
    b.ver = /Firefox\/(\d+(.\d+)?)/.exec(ua)[1]; 
}else if(b.opera){ 
    b.ver = /Opera\/? ?(\d+(\.\d+)?)/.exec(ua)[1]; 
}else if(b.safari){ 
    b.ver = /Version\/(\d+(\.\d+)+)/.exec(ua)[1]; 
}else if(b.chrome){ 
    b.ver = /Chrome\/(\d+(\.\d+)+)/.exec(ua)[1]; 
} 
+4

Что "не работает"? Сообщение об ошибке? Неожиданный результат? Ничего не произошло? Компьютер взрывается? –

+0

Делает ли кофе вместо чая? –

+2

Возможно, IE9 сообщает свой пользовательский агент по-разному от предыдущих версий и поэтому не соответствует строке? Кроме того, вы считали, что обнаружение браузера, вероятно, является плохим идеей? Функциональная детекция обычно лучше, чем обнаружение браузеров, из-за таких проблем, как это - обнаружение браузера имеет тенденцию ломаться при выпуске новых версий (как показано). Плюс строки пользовательского агента могут быть переопределены или даже полностью заблокированы, что означает, что ваш браузерный скрипт обнаружения может быть обманут пользователем. – Spudley

ответ

0

не вы хотите String.match()? например b.ver = ua.match(/MSIE (\d+(\.\d+)?)/)[1];
вам также необходимо избегать . вне класса персонажа.

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

  • Нет связанных вопросов^_^