Есть ли GWT api, который скажет мне, какую версию браузера он обнаружил?Определить версию браузера с использованием GWT?
Я нашел ошибку с обработкой регулярных выражений IE7 и должен кодировать некоторые сложные выражения String.matches().
Есть ли GWT api, который скажет мне, какую версию браузера он обнаружил?Определить версию браузера с использованием GWT?
Я нашел ошибку с обработкой регулярных выражений IE7 и должен кодировать некоторые сложные выражения String.matches().
Вы можете использовать GWT deferred binding using replacement и создать две реализации вашего класса, в которых вы используете регулярное выражение.
Например, предположим, что ваш класс имеет имя Parser
и содержит код для всех веб-браузеров, за исключением IE7. Затем вы можете расширить Parser
и создать класс ParserIE7
для IE7. Затем в конфигурационном файле модуля GWT вы можете добавить:
<replace-with class="Parser">
<when-type-is class="Parser"/>
</replace-with>
<replace-with class="ParserIE7">
<when-type-is class="Parser" />
<when-property-is name="user.agent" value="ie7"/>
</replace-with>
Тогда по телефону
Parser parser = GWT.create(Parser.class);
вы должны иметь правильную (веб-браузер) зависимую реализацию Parser
в parser
переменной.
Подробнее см. here.
+1 Это действительный ответ, если у вас много изменений между разными парсерами и вы хотите минимизировать трафик между сервером и браузером. –
Вы можете определить тип браузера, используя следующий код.
public static native String getUserAgent() /*-{
return navigator.userAgent.toLowerCase();
}-*/;
Затем вы можете вызвать эту функцию и посмотреть тип браузера. Например, приведенный ниже код решает, является ли он интернет-проводником или нет.
if(getUserAgent().contains("msie"))
{
///////// Write your code for ie
}
This page имеет User Agent практически для любого браузера, известных человеку.
Как насчет ['Window.Navigator .getUserAgent() '] (http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/Window.Navigator.html#getUserAgent%28%29) вместо этого вашего метода JSNI? –
Как узнать, является ли браузер «Mozilla Fire Fox/Safari/Opera/Chrome» или нет. можете ли вы опубликовать такое же условие для других браузеров, как и для IE. – Jagadeesh
Кроме того, это вернет ** false ** для ** IE11 **, так как строка userAgent не содержит 'msie'. Нужно использовать 'contains (" msie ") || содержит («трезубец») 'для соответствия ** IE11 **. – Yura
Если вы используете библиотеку GXT, вы можете использовать GXT .isChrome для обнаружения хрома и вы можете найти различные элементы данных класса GXT для обнаружения конкретного браузера.
Использование сторонних библиотек для таких основных/тривиальных задач (независимо от того, насколько популярны они могут быть для других целей) - очень плохая привычка. –
Downvoting немного суровый, хотя. И GXT - очень популярная библиотека, люди, которые могут найти этот пост, могут уже использовать его. –
Не могли бы вы описать недостаток IE7 для нас? Что такое примерное регулярное выражение и каким образом IE7 ошибается (и другие браузеры понимают это правильно)? Я не думаю, что это затрагивает вопрос или ответы, просто было бы неплохо иметь эту информацию здесь для потомков. –
У меня есть регулярное выражение паролей, которое соответствует == true в каждом браузере, протестированном помимо IE7. PASSWORD_REGEX = "((? =. * \\ d) (? =. * [Az]) (? =. * [AZ]). {8,24})" – Stevko