0
可能重複:
JavaScript: How to find out when images are turned off in browser?如何檢測圖像在瀏覽器中是否被禁用?
什麼是檢測用戶是否與圖片瀏覽關閉,並添加另一個樣式表頭那麼最簡單的方法是什麼?
是否有一個簡短的JavaScript代碼片段可以做到這一點,並支持瀏覽器?
可能重複:
JavaScript: How to find out when images are turned off in browser?如何檢測圖像在瀏覽器中是否被禁用?
什麼是檢測用戶是否與圖片瀏覽關閉,並添加另一個樣式表頭那麼最簡單的方法是什麼?
是否有一個簡短的JavaScript代碼片段可以做到這一點,並支持瀏覽器?
這是我的解決方案:
<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);
謝謝。旁邊的問題:我應該更好地刪除這篇文章嗎? – Melros
重複的問題並不全是壞事。通過將「這個問題作爲[鏈接]的重複而關閉」的方式,將一個問題的多個措詞「指向」一個規範的答案可能是有用的。如有疑問,請[在meta上提出問題](http://meta.stackexchange.com/questions/ask),或者在您關注的問題上爲主持人注意。 –