2009-05-20 23 views
5

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_CompileOnePermutationmódulo de GWT XML - cómo redefinir y utilizar más de un agente de usuario

En el artículo Aprendí que puedo acelerar el compilador, pero especificando el agente de usuario de destino. El problema es cómo puedo especificar más de un agente de usuario? Supongamos que mi aplicación es compatible con IE6 y FF3

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

no funciona - Tengo análisis XML error:

[ERROR] Invalid property value 'ie6,gecko1_8' 

Me pregunto si hay una forma de especificar más de un agente de usuario específico en el módulo de archivo XML?

+0

Enlace incorrecto, lleva a la página principal de Google Documentation Reader. –

+0

Tropezado con esta pregunta dentro de una búsqueda. Como una pista: hay un error tipográfico en la propiedad establecida, debería haber sido "ie6, geck ** o ** 1_8" – ArcTanH

Respuesta

1

Todavía no. La idea es desarrollar rápidamente un navegador y luego compilar una vez para implementar (es decir, hacer pruebas finales) para todos los navegadores, con GWT manejando las diferencias del navegador. No olvide que, en el momento del despliegue, GWT optimizará las descargas por navegador para que al final no importe la cantidad de agentes de usuario que elija.

6

Obras en GWT 1.6, el archivo * .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> 
+0

¿Es IE6 solamente, o compilaría JS para todas las versiones de IE? –

+1

Eso es IE6 solamente. Hay otras constantes definidas para el otro IE: IE8, IE9, IE10. Ver la fuente de GWT: https://gwt.googlesource.com/gwt/+/master/user/src/com/google/gwt/useragent/UserAgent.gwt.xml – Bdoserror

4

Con el fin de desplegar rápidamente cualquier aplicación, tendrá dos objetivos; una vez para el motor, su modo alojado se implementa en {Firefox/Linux, Safari/Mac, IE6/Win} y uno para su navegador ágil que le permite crear css en tiempo real {Firefox + Firebug}.

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

Esto es GWT> = 1.6 ¡SOLO!

Para proyectos anteriores de gwt, debe super-fuente el archivo com/google/gwt/user/UserAgent.gwt.xml ... Colóquelo en una ubicación de origen que se incluye ANTES de su gwt - *. Jar en el classpath. Básicamente, puede copiar ese archivo en uno nuevo en el mismo paquete que el original y editar el bloque de javascript CDATA que devuelve el valor real de user.agent. Juega con esto todo lo que quieras, pero no te vuelvas loco con su propiedad user.agent, ya que ESTARÁ cambiando para ie8 en una compilación futura.

Para orientar, por ejemplo, los navegadores, crear su propia propiedad ie.version, y ajustar una copia del proveedor de la propiedad en UserAgent.gwt.xml para orientar las diferentes versiones de ie. Sólo asegúrese de que cuando se utiliza la propiedad personalizada para la vinculación diferida que hace:

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

O obtendrá IE7 + gecko/safari construye y otros desperdicios tonta que nunca será utilizado.

Nota: Cualquier código en un proveedor de propiedades se carga en .nocache.js, y puede ser útil para precargar imágenes/css mientras se descarga la carga útil .cache.js.
Simplemente agregue var __cached = new Image ('Url a la imagen compilada/Lo que quiera cargar');

6

para los navegadores basados ​​en webkit como el cromo, el uso "Safari" como agente de usuario

7

que he tenido un mensaje de error similar, al establecer el valor user.agent a lagartija en GWT2.4. Entonces miré alrededor y encontré donde el código gwt define los valores posibles.

Si mira en gwt-user.jar en com.google.gwt.user.UserAgent.gwt.xml, puede ver los valores posibles para la versión de GWT que está utilizando.

Para GWT2.4, esto es lo que encontré:

<!-- 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"/> 

Por lo tanto gecko no es un valor válido para user.agent en mi caso, y si uso gecko1_8 compila para salir a Firefox.

+0

Noté en GWT 2.7.0 que el UserAgent.gwt.xml ahora está en gwt-user.jar en com.google.gwt.useragent – AnthonyLerpiniere

Cuestiones relacionadas