1

私が知る限り、Google Web Toolkit .gwt.xml ファイルの「user.agent」プロパティは、Java から Java Script への変換のターゲットを指定します。ホスト モードでは Java が実行され、Javascript は実行されないため、Google Chrome が「user.agent」の値が正しく設定されていないと文句を言う理由がわかりません。さらに奇妙なことに、「サファリ」を追加しても不平を言い続け<set-property name="user.agent" value="gecko1_8,safari" />ます。

ここで何ができますか?

GWT バージョン 2.3.0 と GXT バージョン 2.2.5 を使用しています。

4

1 に答える 1

3

DevMode は JavaScript にコンパイルされませんが、延期されたバインディング規則を尊重する必要があり、それらの多くはプロパティに基づいているuser.agentため、正しく設定する必要があります。

user.agentプロパティ値は、いわゆる選択スクリプト(*.nocache.jsファイル) で生成されたスクリプト スニペットによって決定されます。このスクリプトの内容は、GWT モジュールにある によって異なりますset-property

たとえば、GWT モジュールを でコンパイルすると<set-property name="user.agent" value="gecko1_8" />、プロパティは の値にuser.agentハードコードされます。 後で DevMode を実行すると、既存の を上書きする必要があると判断されない限り、それが使用されます。が生成されたときに Chrome を使用してアプリを実行すると、次のようなエラーが発生します。gecko1_8*.nocache.js
*.nocache.js*.nocache.jsgecko1_8

com.google.gwt.core.client.JavaScriptException: (TypeError): Property 'user.agent' of object  is not a function

いくつかのブラウザー用にコンパイルした後、DevMode を のみのモジュールで実行したgecko1_8場合、DevMode は で見つかったプロパティ プロバイダーを使用して、使用されている実際のユーザー エージェント*.nocache.jsを判断し( Chrome の場合)、それを と比較します。モジュールから決定されたもの (ここでは にハードコードされています) であり、それらが一致しないことを警告します (そのため、アプリが機能しなくなる可能性があります: コードはたとえば使用されますが、Chrome では使用されるべきでした)。safarigecko1_8DOMImplMozillaDOMImplSafari


したがって、これを修正するには、*.nocache.jsファイルを削除して DevMode が新しいファイルを生成する必要があるようにするかuser.agent、DevMode で使用するブラウザーと値が一致するモジュールを使用してアプリを再コンパイルします。

于 2012-06-04T10:40:58.457 に答える