MediaWiki:Common.js

From JP1 Remotes Wiki
Revision as of 15:38, 18 November 2025 by The Robman (talk | contribs)
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
document.querySelector('.mw-wiki-logo')?.removeAttribute('style');

mw.hook('wikipage.content').add(function($content) {
  $content.find('*').each(function(_, el) {
    const style = el.getAttribute('style');
    if (!style) return;
    if (/\b(red)\b/i.test(style) && (/\bborder\b|\boutline\b|\bbox-shadow\b/i.test(style))) {
      el.removeAttribute('style');
    }
  });
});
(function() {
  const stripRedInline = el => {
    const s = el.getAttribute('style');
    if (!s) return;
    if (/\b(red)\b/i.test(s) && (/\bborder\b|\boutline\b|\bbox-shadow\b/i.test(s))) {
      el.removeAttribute('style');
    }
  };

  const obs = new MutationObserver(muts => {
    for (const m of muts) {
      if (m.type === 'attributes' && m.attributeName === 'style') {
        stripRedInline(m.target);
      }
      m.addedNodes.forEach(node => {
        if (node.nodeType === 1) {
          stripRedInline(node);
          node.querySelectorAll?.('*').forEach(stripRedInline);
        }
      });
    }
  });

  obs.observe(document.documentElement, {
    attributes: true,
    attributeFilter: ['style'],
    subtree: true,
    childList: true
  });

  // Initial sweep
  document.querySelectorAll('*').forEach(stripRedInline);
})();