Show and reload broken images

The name explained it

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name Show and reload broken images
// @version 3.0.0
// @description The name explained it
// @homepageURL https://github.com/eight04/show-and-reload-broken-images#readme
// @supportURL https://github.com/eight04/show-and-reload-broken-images/issues
// @license MIT
// @author eight04 <[email protected]>
// @namespace eight04.blogspot.com
// @include *
// @grant GM_addStyle
// ==/UserScript==

/* eslint-env browser, greasemonkey */

function reloadImages() {
  for (const img of document.images) {
    if (!img.complete || img.matches("[src]:-moz-broken")) {
      img.src += "#";
    }
  }
}

function broadcastEvent() {
  for (const win of window.frames) {
    win.postMessage("RELOAD_BROKEN_IMAGES", "*");
  }
}

function init() {
  window.addEventListener("keyup", e => {
    if (e.keyCode === 82 && e.altKey) {
      reloadImages();
      broadcastEvent();
    }
  });
  
  window.addEventListener("message", e => {
    if (e.data === "RELOAD_BROKEN_IMAGES") {
      reloadImages();
      broadcastEvent();
    }
  });
}

{
  init();
}