2

私は GWT 2.5.1 を使用しており、Kindle paperwhite モデル No. EY21 のブラウザーを使用して、Tomcat 7.0.32 でデプロイされた .war にアクセスしています。

問題は、GWT が Kindle のユーザー エージェントを正しく取得できないことです。つまり、次の値を取得します。

  • 私のサーバーから: getMyThreadLocalRequest().getHeader("user-agent") --> Mozilla/5.0 (X11; U; Android のような Linux armv7l; en-us) AppleWebKit/531.2+ (Gecko のような KHTML) バージョン/5.0 Safari /533.2+ Kindle/3.0+ --> OK!

  • ウェブからwww.whatsmyuseragent.com --> Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+ - ->わかりました!

  • GWT 2.5.1 ライブラリから: Window.Navigator.getUserAgent() --> Mozilla/5.0 (X11; ; U; Linux armv7l; en-us) AppleWebKit/534.26+ (Gecko のような KHTML) バージョン/5.0 Safari/534.26 + --> ?¿?¿

ということで、GWT関数がKindle paperwhiteブラウザのユーザーエージェントに対して正しい値を取得していないのではないかと思います...

何か案が??

よろしくお願いします!

4

1 に答える 1

2

GWT がクライアント側で user.agent 値を計算する方法は、ブートストラップ スクリプトの作成に使用されるクラスUserAgentPropertyGenerator.javaにあります。

  body.println("var ua = navigator.userAgent.toLowerCase();");

  [...]

  // webkit family
  new UserAgentPropertyGeneratorPredicate("safari")
  .getPredicateBlock()
    .println("return (ua.indexOf('webkit') != -1);")
  .returns("'safari'"),

このコードと送信したユーザー エージェント文字列を見ると、gwt はwebkit順列を選択する必要があります (ユーザー エージェントには WebKit が含まれているため)。

エラーが発生せず、空白のページが表示される場合は、モジュール ファイルで Webkit ブラウザー (safari) の順列を無効にしているか、プロジェクトで user.agent 以外のプロパティを使用している可能性があります。一部のプロパティの組み合わせがデバイスと一致しません。

リンカーを使用している場合はxsiframe、コンパイラ出力フォルダーに生成された compilation-mappings.txt ファイルを参照してください。このファイルには、順列名とプロパティのリストが含まれています。

于 2013-10-29T10:02:54.530 に答える