2

今週末以降、Wicket アプリケーションは JavaScript を正しく検出できなくなりました。私のウェブホスト、ローカル マシンでは動作せず、別のコンピューターでもテストしました。

私の検出スクリプト:

WebClientInfo clientInfo = (WebClientInfo)WebSession.get().getClientInfo();
    if(!clientInfo.getProperties().isJavaEnabled()){
        System.out.println("not enabled!");
        WebSession.get().setClientInfo(null);
    }

さらに、これをアプリケーション クラスに追加します。

getRequestCycleSettings().setGatherExtendedBrowserInfo(true);

また、改札アプリを最初から作成しましたが、同じ結果で、JavaScript が検出されませんでした。

これを書いている間、私は Internet Explorer でそれをチェックしました。IE 8 + 9 では正常に動作します。FF 11.0 では動作しません。ウィケットのバージョンは 1.5.5 です。

誰でもこの動作を確認できますか? (JIRAに値する可能性があります...)

更新:この動作の原因が見つかりました。isJavaEnabledJava (Javascript ではない) が有効かどうかを確認します。Firefox は 4 月 2 日に Java プラグインを (静かに) ブロックしたため、javaEnabled プロパティ セットはありません: https://addons.mozilla.org/en-US/firefox/blocked/p80。面倒。

4

2 に答える 2

3

おそらくこれはうまくいかなかったし、それが運が悪かったように見えたという事実。

ClientProperties.isJavaEnabled()のjavadocsを見ると、JavaScriptではなくJavaが有効navigator.javaEnabledかどうかを反映するクライアントのプロパティが返されます。

Java!=JavaScript。

于 2012-04-10T11:48:44.047 に答える
1

別の方法は、「ユーザー エージェント」文字列を使用することです。

public boolean javascriptSupported() {
    WebRequest webRequest = (WebRequest) getRequest();
    String userAgent = webRequest.getHeader("User-Agent");
    if (userAgent == null || userAgent.startsWith("Googlebot")) {
        return false;
    }
    return true;
}

AjaxLazyLoadPanel上記のユーザーエージェントのリストを拡張する必要がありますが、これを検索エンジンのフォールバックに使用しました。

Javascript が存在しない場合の Wicket の動作を判断するために使用されるため、これもWebRequest.isAjax()役立つ可能性があります。RedirectPolicy

于 2014-08-07T04:32:06.633 に答える