MediaWiki:Common.js:修订间差异
| 第1行: | 第1行: | ||
// 用户名前显示头像 | |||
//用户名前显示头像 | |||
mw.loader.using( 'mediawiki.util', function () { | mw.loader.using( 'mediawiki.util', function () { | ||
$( document ).ready( function () { | $( document ).ready( function () { | ||
// 选择用户链接 | |||
$( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"]' ).each( function () { | $( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"]' ).each( function () { | ||
var $link = $( this ); | var $link = $( this ); | ||
// 防止重复添加 | |||
if ( $link.prev( '.sp-avatar-wrapper' ).length ) { | if ( $link.prev( '.sp-avatar-wrapper' ).length ) { | ||
return; | return; | ||
} | } | ||
// 提取用户名 | |||
var href = $link.attr( 'href' ); | var href = $link.attr( 'href' ); | ||
var userName = decodeURIComponent( href.split( '/wiki/' )[1] ).replace( /^User:|^用户:/, '' ); | var userName = decodeURIComponent( href.split( '/wiki/' )[1] ).replace( /^User:|^用户:/, '' ); | ||
// 调用 API 获取高清头像 | |||
new mw.Api().get( { | new mw.Api().get( { | ||
action: ' | action: 'query', | ||
list: 'users', | |||
ususers: userName, | |||
usprop: 'avatar', | |||
// 请求 128px 或 256px 的原图 (根据你的 wiki 配置调整) | |||
usavatarsize: 128 | |||
} ).done( function ( data ) { | } ).done( function ( data ) { | ||
if ( data. | if ( data.query && data.query.users && data.query.users[0] && data.query.users[0].avatar ) { | ||
var | var avatarUrl = data.query.users[0].avatar; | ||
var $avatarWrapper = $( '<span class="sp-avatar-wrapper" style="vertical-align: middle; margin-right: 4px; display: inline-block | |||
// 创建图片元素 | |||
var $avatarImg = $( '<img>' ).attr( { | |||
src: avatarUrl, | |||
alt: userName, | |||
style: 'vertical-align: middle; width: 20px; height: 20px; border-radius: 2px; object-fit: cover;' | |||
} ); | |||
// 包裹元素并插入到链接前 | |||
var $avatarWrapper = $( '<span class="sp-avatar-wrapper" style="vertical-align: middle; margin-right: 4px; display: inline-block;"></span>' ).html( $avatarImg ); | |||
$link.before( $avatarWrapper ); | $link.before( $avatarWrapper ); | ||
} | } | ||