0

画像を読み込み、正常に読み込まれたかどうかを確認する関数があります。(ブラウザが WebP をサポートしているかどうかを確認するには)

問題は、これには onload() と onerror() を使用する必要があることです。つまり、単純に値を返すことはできません。

イベントが発生するまで戻るのを遅らせるにはどうすればよいですか?

これが私のコードです:

function start_check_webp(){
  var div = document.createElement('div');
  div.innerHTML = '<img id = "test_image" src="test_image.webp">';
  webp_test = div.firstChild;
  div.firstChild.onerror = function(){support_webp = false}
  div.firstChild.onload = function(){support_webp = true}
}
4

2 に答える 2

1

できません。非同期イベントを処理するには、コードを再構築する必要があります。イベント ハンドラーに変数を設定させる代わりに、WebP がサポートされているかどうかにかかわらず、実際に何かを実行する関数を呼び出させることができます。

于 2011-04-07T01:48:04.257 に答える
0

画像が読み込まれると実行されるようにコードを構成します。外部画像の代わりにデータ URI を使用することで、プロセスを高速化できます。

function testWepP() {
  var webP = new Image();     
  webP.src = 'data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIAL' + 
    'mk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA';
  webP.onload = webP.onerror = function () {
     callback(webP.height === 2);     
  }; 
};

testWebP(function(supported) {
  console.log((supported) ? "webP supported!" : "webP not supported."); 
});
于 2012-08-08T14:04:10.000 に答える