// ==UserScript== // @name Show and reload broken images // @description The name explained it // @namespace eight04.blogspot.com // @include http://* // @include https://* // @version 2.0 // @grant GM_addStyle // @downloadURL none // ==/UserScript== (function(){ GM_addStyle( "img{-moz-force-broken-image-icon:1;}" ); // var imgs=document.images; /* function checkBroken(img){ // return window.getComputedStyle(img).MozForceBrokenImageIcon * 1; if(img.classList.contains("loaded")){ return false; } if(!img.classList.contains("reloaded")){ img.classList.add("reloaded"); img.addEventListener("load", function(e){ e.target.classList.add("loaded"); }, false); } return true; // return !img.complete || !img.naturalWidth || // (img.width == 24 && img.naturalWidth != img.width); } */ function load(d){ d.src += "#"; } function reloadImg(){ var imagesFailed = document.querySelectorAll("img:-moz-broken"); var images = document.images; for(let image of images){ if(!image.complete){ image.classList.add("failed"); }else{ image.classList.remove("failed"); } } for(let image of imagesFailed){ image.classList.add("failed"); } for(let image of images){ if(image.classList.contains("failed") && image.src){ load(image); } } } function getKey(e){ if(e.keyCode==82 && e.altKey) reloadImg(); } document.addEventListener("keyup",getKey,false); })();