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

From Heroes 3 wiki
Jump to navigation Jump to search
Created page with "(function () { function resolveUrl($el) { var u = $el.attr('data-audio-url'); if (u) return u; var f = $el.attr('data-audio-file'); if (!f || /\{\{/.test(f)) return null; // don’t play if a template param didn’t expand return mw.util.getUrl('Special:FilePath/' + f); } var cache = {}; mw.hook('wikipage.content').add(function ($c) { $c.on('click', '.click-audio', function (e) { e.preventDefault(); var u = resolveUrl($(this));..."
 
Test
Line 1: Line 1:
(function () {
mw.loader.using('mediawiki.util').then(function () {
  var cache = Object.create(null);
 
   function resolveUrl($el) {
   function resolveUrl($el) {
     var u = $el.attr('data-audio-url');
     var u = $el.attr('data-audio-url');
     if (u) return u;
     if (u) return u;
     var f = $el.attr('data-audio-file');
     var f = $el.attr('data-audio-file');
     if (!f || /\{\{/.test(f)) return null; // don’t play if a template param didn’t expand
     if (!f || /\{\{/.test(f)) return null;  
     return mw.util.getUrl('Special:FilePath/' + f);
     return mw.util.getUrl('Special:FilePath/' + f);
   }
   }
   var cache = {};
 
   $(document).on('click', '.click-audio', function (e) {
    e.preventDefault();
    var $el = $(this);
    var url = resolveUrl($el);
    if (!url) return;
    var a = cache[url] || (cache[url] = new Audio(url));
    a.currentTime = 0;
    a.play && a.play();
  });
 
  // Optional: pointer cursor + keyboard
   mw.hook('wikipage.content').add(function ($c) {
   mw.hook('wikipage.content').add(function ($c) {
    $c.on('click', '.click-audio', function (e) {
      e.preventDefault();
      var u = resolveUrl($(this));
      if (!u) return;
      var a = cache[u] || (cache[u] = new Audio(u));
      a.currentTime = 0;
      a.play && a.play();
    });
     $c.find('.click-audio').css('cursor', 'pointer').attr({ role: 'button', tabindex: 0 });
     $c.find('.click-audio').css('cursor', 'pointer').attr({ role: 'button', tabindex: 0 });
   });
   });
})();
});

Revision as of 01:40, 10 September 2025

mw.loader.using('mediawiki.util').then(function () {
  var cache = Object.create(null);

  function resolveUrl($el) {
    var u = $el.attr('data-audio-url');
    if (u) return u;
    var f = $el.attr('data-audio-file');
    if (!f || /\{\{/.test(f)) return null; 
    return mw.util.getUrl('Special:FilePath/' + f);
  }

  $(document).on('click', '.click-audio', function (e) {
    e.preventDefault();
    var $el = $(this);
    var url = resolveUrl($el);
    if (!url) return;
    var a = cache[url] || (cache[url] = new Audio(url));
    a.currentTime = 0;
    a.play && a.play();
  });

  // Optional: pointer cursor + keyboard
  mw.hook('wikipage.content').add(function ($c) {
    $c.find('.click-audio').css('cursor', 'pointer').attr({ role: 'button', tabindex: 0 });
  });
});