LLWiki正在建设中,欢迎加入我们

User:Bhsd/widget/listen.js

来自LLWiki
< User:Bhsd‎ | widget
Bhsd讨论 | 贡献2021年2月24日 (三) 06:00的版本 (创建页面,内容为“"use strict"; →‎global mw, $, wgULS:​ (() => { const main = () => { mw.widget = mw.widget || {}; if (mw.widget.listen) { return; } let…”
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件
"use strict";
/* global mw, $, wgULS */
(() => {
    const main = () => {
        mw.widget = mw.widget || {};
        if (mw.widget.listen) { return; }
        let audio, menu, vup, vdown;
        const initialize = () => {
            const volume = audio.volume;
            vup.setDisabled( volume == 1 );
            vdown.setDisabled( volume === 0 ).$label.children( '.fa' )
                .toggleClass('fa-volume-down', volume > 0).toggleClass('fa-volume-mute', volume === 0);
        },
            $download = $('<a>');
        $('#bodyContent').on('click', '.listen > i:first-of-type', function() {
            const ad = $(this).toggleClass( 'fa-play fa-pause' ).prev( 'audio' )[0];
            ad[ad.paused ? 'play' : 'pause']();
        }).on('click', '.listen > .fa-ellipsis-v', function() {
            const $this = $(this),
                $audio = $this.prevAll( 'audio' ),
                src = $audio.children( 'source' ).attr( 'src' );
            audio = $audio[0];
            menu.toggle( true ).setFloatableContainer( $this );
            $download.attr({href: src, download: src.split( '/' ).pop()});
            initialize();
        });
        mw.loader.using( ['oojs-ui-core', 'ext.gadget.site-lib'] ).then(() => {
            mw.messages.set( wgULS({
                'widget-li-up': '音量上调', 'widget-li-down': '音量下调', 'widget-li-download': '下载'
            }, {
                'widget-li-up': '音量上調', 'widget-li-down': '音量下調', 'widget-li-download': '下載'
            }) );
            menu = mw.menu([ {text: mw.msg( 'widget-li-up' ), icon: 'volume-up', data: 1, click: () => {
                audio.volume += 0.1;
                initialize();
            }}, {text: mw.msg( 'widget-li-down' ), icon: 'volume-down', data: 2, click: () => {
                audio.volume -= 0.1;
                initialize();
            }}, {text: mw.msg( 'widget-li-download' ), icon: 'download', data: 3}
            ], {id: 'listen-menu', hideOnChoose: false}, true);
            vup = menu.findItemFromData( 1 );
            vdown = menu.findItemFromData( 2 );
            menu.findItemFromData( 3 ).$label.wrap( $download );
        });
        mw.widget.listen = true;
    };
    if (window.jQuery) { main(); }
    else { window.addEventListener('jquery', main); }
}) ();