2011-12-04 8 views
0

可能性の重複:
JavaScript: How to find out when images are turned off in browser?ブラウザでイメージが無効になっているかどうかを検出するにはどうすればよいですか?

ユーザーが画像を閲覧することはオフになっているかどうかを検出して、頭に別のスタイルシートを追加する最も簡単な方法は何ですか?

トリックを行うことができ、ブラウザのサポートが良好な短いjavascriptスニペットはありますか?

+0

はありがとうございます。質問:私はこのポストを削除する方がいいですか? – Melros

+0

重複した質問がすべて悪くないわけではありません。 「[link]の重複として閉じられたこの質問」のように、標準的な答えで問題の複数の言葉遣いを「指摘」することは有益です。疑いがある場合は、[メタに関する質問をする](http://meta.stackexchange.com/questions/ask)、または♦モデレータの注意をあなたの懸念事項にフラグを立てます。 –

答えて

1

これは私のソリューションです:

<script type="text/javascript"> 
    detectImageEnabledMode({ 
     onDetectImageIsDisabled:function(){ 
      alert('disabled'); 
     }, 
     onDetectImageIsEnabled:function(){ 
      alert('enabled'); 
     } 
    }); 
    function detectImageEnabledMode(options){ 
     /* define disabled/enabled actions */ 
     var actionCounter = 0; 
     var enabledAction = (options.onDetectImageIsEnabled && typeof(options.onDetectImageIsEnabled)=='function')?options.onDetectImageIsEnabled:function(){}; 
     var enaledActionRun = function(){ 
      if(actionCounter) return; 
      actionCounter++; 
      enabledAction(); 
     } 
     var disabledAction = (options.onDetectImageIsDisabled && typeof(options.onDetectImageIsDisabled)=='function')?options.onDetectImageIsDisabled:function(){}; 
     var disabledActionRun = function(){ 
      if(actionCounter) return; 
      actionCounter++; 
      disabledAction(); 
     } 
     /* create image */ 
     var img = new Image(); 
     var currentTime = (new Date()).getTime(); 
     if(navigator.appName.indexOf('Microsoft Internet Explorer') != -1){// ie 
      img.onload = enaledActionRun; 
      img.onabort = enaledActionRun; 
      img.onerror = enaledActionRun; 
      img.src = currentTime+'.'+currentTime+'?time='+currentTime; 
      setTimeout(function(){ 
       disabledActionRun(); 
      }, 0); 
     }else if (navigator.appName.indexOf('Opera') != -1) {// opera 
      img.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw=="+'?time='+(new Date()).getTime(); 
      if(img.complete){ 
       enaledActionRun(); 
      }else{ 
       disabledActionRun(); 
      } 
     }else{// other 
      img.src = currentTime+'.'+currentTime+'?time='+currentTime; 
      if(img.complete){ 
       disabledActionRun(); 
      }else{ 
       enaledActionRun(); 
      } 
     } 
    } 
    // tested in: ff 2+, opera 9+, chrome, safari 4+, ie 6+ 
</script> 

Live demo. 唯一の問題 - すなわち、最小の非同期:

setTimeout(function(){ 
disabledActionRun(); 
}, 0); 
関連する問題