User:Loki Laufeyjarson/common.js: Difference between revisions

From Heroes 3 wiki
Jump to navigation Jump to search
No edit summary
Replaced content with "console.log('[click-audio] probe loaded'); document.documentElement.setAttribute('data-click-audio-probe', 'on');"
Tag: Replaced
Line 1: Line 1:
(function () {
console.log('[click-audio] probe loaded');
  var cache = Object.create(null);
document.documentElement.setAttribute('data-click-audio-probe', 'on');
 
  function toAudioUrl(href) {
    if (!href) return null;
 
    var abs = new URL(href, location.href).toString();
 
    if (/\.(mp3|wav|ogg|m4a|webm)(\?|#|$)/i.test(abs)) return abs;
 
    var m = abs.match(/\/(File|Media):([^?#]+)/i);
    if (m) {
      var title = decodeURIComponent(m[2]);
      var base = location.origin + location.pathname.replace(/\/index\.php.*|\/wiki\/.*|$/, '');
      return location.origin + '/wiki/Special:FilePath/' + encodeURIComponent(title);
    }
 
    if (/\/Special:FilePath\//i.test(abs)) return abs;
 
    return null;
  }
 
  document.addEventListener('click', function (e) {
    var wrap = e.target.closest('.click-audio');
    if (!wrap) return;
 
    if (e.ctrlKey || e.metaKey || e.shiftKey || e.altKey) return;
 
    var a = wrap.querySelector('a');
    if (!a) return;
 
    var url = toAudioUrl(a.getAttribute('href'));
    if (!url) return;
 
    e.preventDefault();
    e.stopPropagation();
    try { e.stopImmediatePropagation(); } catch (_) {}
 
    var audio = cache[url] || (cache[url] = new Audio(url));
    try {
      audio.currentTime = 0;
      var p = audio.play && audio.play();
      if (p && p.catch) p.catch(function(){});
    } catch (_) {}
  }, true);
})();

Revision as of 01:56, 10 September 2025

console.log('[click-audio] probe loaded');
document.documentElement.setAttribute('data-click-audio-probe', 'on');