User:Loki Laufeyjarson/common.js: Difference between revisions
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; | 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.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 });
});
});