2009-05-20 4 views
5

http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=FAQ_CompileOnePermutationXML du module GWT - comment redéfinir et utiliser plus d'un agent utilisateur

Dans l'article que j'ai appris que je peux accélérer le compilateur, mais en spécifiant l'agent utilisateur cible. Le problème comment puis-je spécifier plus d'un agent utilisateur? Supposons que mon application prend en charge IE6 et FF3

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

ne fonctionne pas - je suis erreur d'analyse XML:

[ERROR] Invalid property value 'ie6,gecko1_8' 

Je me demande s'il y a un moyen de spécifier plus d'un agent utilisateur spécifique dans le fichier XML du module?

+0

Mauvais lien vers la page principale du Reader de la documentation de Google. –

+0

Est tombé sur cette question lors d'une recherche. Comme astuce: il y a une faute de frappe dans la propriété set, devrait avoir été "ie6, geck ** o ** 1_8" – ArcTanH

Répondre

1

Pas encore. L'idée est que vous développiez rapidement un navigateur et que vous compiliez une fois pour le déployer (c'est-à-dire effectuer les tests finaux) pour tous les navigateurs, GWT gérant les différences du navigateur. N'oubliez pas qu'au moment du déploiement, GWT optimisera les téléchargements par navigateur, de sorte qu'au final, peu importe le nombre d'agents utilisateurs que vous avez choisis.

6

Works dans GWT 1.6, votre fichier * .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

Est-ce IE6 seulement, ou compilera-t-il JS pour toutes les versions de IE? –

+1

C'est IE6 seulement. Il existe d'autres constantes définies pour l'autre IE: IE8, IE9, IE10. Voir la source GWT: https://gwt.googlesource.com/gwt/+/master/user/src/com/google/gwt/useragent/UserAgent.gwt.xml – Bdoserror

4

Afin de déployer rapidement une application, vous aurez besoin de deux cibles; une fois pour le moteur que votre mode hébergé déploie sur {Firefox/Linux, Safari/Mac, IE6/Win}, et un pour votre navigateur agile qui vous permet de construire des CSS en temps réel {Firefox + Firebug}.

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

Ceci est GWT> = 1,6 UNIQUEMENT!

Pour les projets gwt plus anciens, vous devez super-source le fichier com/google/gwt/user/UserAgent.gwt.xml ... Placez-le dans un emplacement source qui est inclus AVANT votre gwt - *. Jar sur le classpath. Fondamentalement, vous pouvez copier ce fichier dans un nouveau dans le même paquet que l'original, et éditer le bloc javascript CDATA qui retourne la valeur réelle user.agent. Jouez avec tout ce que vous aimez, mais ne devenez pas trop fou avec leur propriété user.agent, car elle changera pour ie8 dans une prochaine version.

Pour cibler les navigateurs, créez votre propre propriété ie.version et modifiez une copie du fournisseur de propriétés dans UserAgent.gwt.xml pour cibler différentes versions de ie. Assurez-vous que lorsque vous utilisez la propriété personnalisée pour vous lier différé ne:

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

Ou vous obtiendrez IE7 + gecko/safari construit et autres objets de rebut idiot qui ne sera jamais utilisé.

Remarque: Tout code d'un fournisseur de propriété est chargé dans le fichier .nocache.js et peut être utile pour précharger les images/css pendant le chargement de la charge .cache.js.
Il suffit d'ajouter var __cached = new Image ('Url à l'image compilée/Quoi que vous vouliez charger');

6

pour les navigateurs basés webkit comme le chrome, utilisez « Safari » comme l'agent utilisateur

7

J'ai eu un message d'erreur semblable, lors de la mise à la valeur de user.agent à gecko GWT2.4. J'ai donc regardé autour et trouvé où le code gwt définit les valeurs possibles.

Si vous regardez dans le fichier gwt-user.jar à l'adresse com.google.gwt.user.UserAgent.gwt.xml, vous pouvez voir les valeurs possibles pour la version de GWT que vous utilisez.

Pour GWT2.4, ce que je trouve:

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

Par conséquent gecko n'est pas une valeur valide pour user.agent dans mon cas, et si j'utiliser gecko1_8 compile pour Firefox bien.

+0

J'ai remarqué dans GWT 2.7.0 que le UserAgent.gwt.xml est maintenant dans le fichier gwt-user.jar sur com.google.gwt.useragent – AnthonyLerpiniere