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

“User:Bhsd/widget/songposition.js”的版本间差异

来自LLWiki
跳转到导航 跳转到搜索
(支持多种目标)
第15行: 第15行:
target = targets.join(),
target = targets.join(),
map = new Map(),
map = new Map(),
$label = $('<div>', {html: '<div>'}),
$body = $( '#bodyContent' );
$body = $( '#bodyContent' ).on('mouseenter', target, function() {
$label.children( 'div' ).html( map.get(this) );
});
mw.hook( 'wikipage.content' ).add($content => { // 更新图片对应关系
mw.hook( 'wikipage.content' ).add($content => { // 更新图片对应关系
if ($content.find( '.member-symbol-image' ).length === 0) { return; }
if ($content.find( '.member-symbol-image' ).length === 0) { return; }
第26行: 第23行:
mw.loader.using(['oojs-ui-core', 'ext.gadget.site-lib']).then(() => {
mw.loader.using(['oojs-ui-core', 'ext.gadget.site-lib']).then(() => {
for (const t of targets) {
for (const t of targets) {
const $label = $('<div>', {html: '<div>'});
$body.on('mouseenter', t, function() {
$label.children( 'div' ).html( map.get(this) );
});
mw.tipsy($body, t, {id: `${t}-popup`}, $label);
mw.tipsy($body, t, {id: `${t}-popup`}, $label);
}
}

2022年12月3日 (六) 19:02的版本

//<nowiki>
// 用于[[Widget:Songposition]],可以使用ES6语法
/**
 * @Function: 鼠标移动至歌曲站位图标上方时提示角色姓名
 * @Dependencies: oojs-ui-core, ext.gadget.site-lib
 * @Author: [[User:Bhsd]]
 */
"use strict";
/* global mw, $ */
(() => {
    const main = () => {
        mw.widget = mw.widget || {};
        if (mw.widget.songposition) { return; }
        const targets = ['.member-symbol', '.member-graph'],
        	target = targets.join(),
            map = new Map(),
            $body = $( '#bodyContent' );
        mw.hook( 'wikipage.content' ).add($content => { // 更新图片对应关系
            if ($content.find( '.member-symbol-image' ).length === 0) { return; }
            console.log('Hook: wikipage.content, 开始更新songposition的图片映射');
            $content.find( target ).each(function() { map.set(this, $(this).next().find( 'img' )); });
        });
        mw.loader.using(['oojs-ui-core', 'ext.gadget.site-lib']).then(() => {
            for (const t of targets) {
            	const $label = $('<div>', {html: '<div>'});
            	$body.on('mouseenter', t, function() {
		            $label.children( 'div' ).html( map.get(this) );
		        });
            	mw.tipsy($body, t, {id: `${t}-popup`}, $label);
            }
        });
        mw.widget.songposition = true;
    };
    if (window.jQuery) { main(); }
    else { window.addEventListener('jquery', main); }
}) ();
//</nowiki>
// [[category:jQuery小部件]] {{DEFAULTSORT:Songposition}}