3

WebP 画像の驚くべきサイズ縮小 (ロスレス + アルファ画像の「pngcrushed」PNG よりも約 28% 小さい) を見て、WebP をサポートするブラウザーに WebP 画像を提供したいと考えています。

クライアントのブラウザーが WebP をサポートしているかどうかを Java webapp サーバーから検出するにはどうすればよいですか?

JavaScript からそれを行う方法について、ここに質問がありました。

WebP サポートの検出

しかし、Javaからそれを行う方法を知りたいです。Java から実行することがクライアント側で JavaScript を呼び出すことを意味する場合、その方法を知りたいです。

4

3 に答える 3

7

クライアントで webP サポートを検出する簡単な方法があります。次に、クライアントに Cookie を設定し、サーバーで値を読み取ることができます。

function testWepP(callback) {
   var webP = new Image();     
   webP.src = 'data:image/webp;base64,UklGRi4AAABXRUJQVlA4TCEAAAAvAUAAEB8wAiMw' + 
'AgSSNtse/cXjxyCCmrYNWPwmHRH9jwMA';
   webP.onload = webP.onerror = function () {
      callback(webP.height === 2);     
   }; 
};

testWebP(function(supported) {
   console.log((supported) ? "webP 0.2.0 supported!" : "webP not supported."); 
});

詳細はこちら

于 2012-08-08T14:00:47.897 に答える
3

Java だけを使用して Web ブラウザーの機能を判断することはできません。Java/JSP は、Web ブラウザーではなく、Web サーバーで実行されます。これには本当に JavaScript を使用する必要があります。関連する質問で既に見つけたコードを使用できます。最も簡単にできることは、ブラウザーが WebP をサポートしていることを示す Cookie がまだ存在しない場合に JS にページの読み込みをチェックさせ、それに応じて機能検出を行い、最後に によって長寿命の Cookie を設定しdocument.cookie、ページをリロードすることlocation.reload()です。

サーバー側では、適切な画像 URL を送信/設定する前にHttpServletRequest#getCookies()、サーブレットまたはJSP でCookie および/またはその値の存在を確認するだけで済みます。${cookie}

Cookie を設定する以外に、いつでも JS に ajax リクエストのリクエスト パラメータとしてデータを送信させることができますが、これはすべてのリクエストまたはセッションでそれを行う必要があることを意味します。

于 2011-11-18T17:43:41.783 に答える