跳转到内容

MediaWiki:Gadget-AudioText.js

来自电棍ottowiki
OctoberSama留言 | 贡献2025年5月24日 (六) 22:15的版本

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-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);
                }
            });
        });
    });
})();