Модуль GWT XML - как переопределить и использовать более одного пользовательского агента - PullRequest
5 голосов
/ 21 мая 2009

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_CompileOnePermutation

В статье, которую я узнал, я могу ускорить компилятор, но указав целевой пользовательский агент. Проблема, как я могу указать более одного пользовательского агента? Предположим, мое приложение поддерживает ie6 и FF3

<set-property name="user.agent" value="ie6,geck1_8" />

не работает - я получил ошибку разбора XML:

[ERROR] Invalid property value 'ie6,gecko1_8'

Мне интересно, есть ли способ указать более одного конкретного пользовательского агента в XML-файле модуля?

Ответы [ 5 ]

7 голосов
/ 09 августа 2012

У меня было похожее сообщение об ошибке при установке значения user.agent в gecko в GWT2.4. Поэтому я осмотрелся и нашел, где код gwt определяет возможные значения.

Если вы посмотрите в gwt-user.jar на com.google.gwt.user.UserAgent.gwt.xml, вы увидите возможные значения используемой версии GWT.

Для GWT2.4 вот что я нашел:

<!-- Browser-sensitive code should use the 'user.agent' property -->
  <define-property name="user.agent" values="ie6" />
  <extend-property name="user.agent" values="ie8" />
  <extend-property name="user.agent" values="gecko1_8" />
  <extend-property name="user.agent" values="safari" />
  <extend-property name="user.agent" values="opera" />
  <extend-property name="user.agent" values="ie9" fallback-value="ie8" />
  <property-provider name="user.agent" generator="com.google.gwt.user.rebind.UserAgentPropertyGenerator"/>

Поэтому в моем случае gecko не является допустимым значением для user.agent, и если я использую gecko1_8, он хорошо компилируется для Firefox.

6 голосов
/ 30 декабря 2010

для браузеров на основе webkit, таких как chrome, используйте "safari" в качестве пользовательского агента

6 голосов
/ 21 мая 2009

Работает в GWT 1.6, ваш файл * .gwt.xml:

<module rename-to="moduleName">
      <!-- blah blah -->
      <set-property name="user.agent" value="ie6,gecko,gecko1_8" />
      <!-- generate perms for IE and firefox only -->
</module>
4 голосов
/ 24 июня 2009

Для быстрого развертывания любого приложения вам понадобятся две цели; один раз для движка, который ваш хост-режим развертывает на {Firefox / Linux, Safari / Mac, IE6 / Win}, и один для вашего гибкого браузера, который позволяет вам создавать CSS в режиме реального времени {Firefox + Firebug}.

Linux: <set-property name="user.agent" value="gecko1_8,gecko"/>
Mac: <set-property name="user.agent" value="gecko1_8,safari"/>
...etc...

Это GWT> = 1.6 ТОЛЬКО!

Для более старых проектов gwt, вы должны установить исходный код файла com / google / gwt / user / UserAgent.gwt.xml ... Поместите его в исходное местоположение, которое ДО ПЕРЕД вашей gwt - *. Jar на classpath , По сути, вы можете скопировать этот файл в новый в том же пакете, что и оригинал, и отредактировать блок JavaScript CDATA, который возвращает фактическое значение user.agent. Играйте со всем, что вам нравится, но не сходите с ума от их свойства user.agent, так как он будет изменен на ie8 в будущей сборке.

Чтобы настроить таргетинг, например, на браузеры, создайте собственное свойство ie.version и настройте копию поставщика свойств в UserAgent.gwt.xml, чтобы настроить таргетинг на разные версии ie. Просто убедитесь, что при использовании пользовательского свойства для отложенной привязки вы делаете:

<all>
  <when-property-is name="user.agent" value="ie6"/>
  <any>
    <when-property-is name="ie.version" value="ie7"/>
    <when-property-is name="ie.version" value="ie8"/>
  </any>
</all>

Или вы получите сборку ie7 + gecko / safari и другой глупый мусор, который никогда не будет использоваться.

Примечание. Любой код в поставщике свойств загружается в .nocache.js и может быть полезен для предварительной загрузки images / css во время загрузки полезной нагрузки .cache.js.
Просто добавьте var __cached = new Image ('URL к скомпилированному изображению / все, что вы хотите загрузить');

1 голос
/ 21 мая 2009

Еще нет. Идея состоит в том, что вы быстро разрабатываете для одного браузера, а затем компилируете один раз, чтобы развернуть (т.е. выполнить окончательное тестирование) для всех браузеров, причем GWT обрабатывает различия между браузерами. Не забывайте, что во время развертывания GWT оптимизирует загрузку для каждого браузера, так что в конечном итоге не имеет значения, сколько пользовательских агентов вы выбрали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...