MediaWiki:Gadget-AudioText.js
外观
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
// MediaWiki:Gadget-AudioText.js (function() { mw.hook('wikipage.content').add(function() { document.querySelectorAll('.audio-trigger').forEach(element => { element.addEventListener('click', async function(event) { event.preventDefault(); // 1. 立即创建音频对象并触发播放请求(占位) const audio = new Audio(); audio.autoplay = true; // 关键:声明自动播放意图 audio.play().catch(() => {}); // 静默忽略首次错误 // 2. 异步获取真实URL const audioFile = element.dataset.audioFile; const apiUrl = mw.util.wikiScript('api') + '?action=query&titles=' + encodeURIComponent(audioFile) + '&prop=imageinfo&iiprop=url&format=json'; try { const response = await fetch(apiUrl); const data = await response.json(); const pages = data.query.pages; const pageId = Object.keys(pages)[0]; const audioUrl = pages[pageId].imageinfo[0].url; // 3. 替换音频源并重新播放 audio.src = audioUrl; await audio.play(); } catch (error) { alert("❌ 终极错误: " + error.message); } }); }); }); })();