MediaWiki:Common.js:修订间差异
外观
| 第5行: | 第5行: | ||
$elements.each( function () { | $elements.each( function () { | ||
var $link = $( this ); | var $link = $( this ); | ||
if ( $link.prev( '.sp-avatar-wrapper' ).length ) { | if ( $link.prev( '.sp-avatar-wrapper' ).length ) { | ||
return; | return; | ||
} | } | ||
if ( $link.closest( '#p-views' ).length || $link.closest( '#p-cactions' ).length || $link.closest( '#p-tb' ).length || $link.closest( '#right-navigation' ).length ) { | if ( $link.closest( '#p-views' ).length || $link.closest( '#p-cactions' ).length || $link.closest( '#p-tb' ).length || $link.closest( '#right-navigation' ).length ) { | ||
return; | return; | ||
} | } | ||
var href = $link.attr( 'href' ); | var href = $link.attr( 'href' ); | ||
if ( !href ) return; | if ( !href ) return; | ||
var userPart = decodeURIComponent( href.split( '/wiki/' )[1] ); | var userPart = decodeURIComponent( href.split( '/wiki/' )[1] ); | ||
if ( !userPart ) return; | if ( !userPart ) return; | ||
if ( userPart.indexOf( '/' ) !== -1 ) { | if ( userPart.indexOf( '/' ) !== -1 ) { | ||
return; | return; | ||
} | } | ||
var userName = userPart.replace( /^User:|^用户:/, '' ); | var userName = userPart.replace( /^User:|^用户:/, '' ); | ||
var linkText = $link.text().trim().replace(/^User:|^用户:/, ''); | |||
var linkText = $link.text().trim(); | |||
if ( linkText !== userName ) { | if ( linkText !== userName ) { | ||
var $span = $link.find( 'span' ).first(); | var $span = $link.find( 'span' ).first(); | ||
var spanText = $span.length ? $span.text().trim().replace(/^User:|^用户:/, '') : ''; | |||
if ( !$span.length || spanText !== userName ) { | |||
return; | return; | ||
} | } | ||
} | } | ||
new mw.Api().get( { | new mw.Api().get( { | ||
action: 'parse', | action: 'parse', | ||
| 第46行: | 第37行: | ||
var avatarHtml = data.parse.text[ '*' ]; | var avatarHtml = data.parse.text[ '*' ]; | ||
var $avatarWrapper = $( '<span class="sp-avatar-wrapper" style="vertical-align: middle; margin-right: 4px; display: inline-block;"></span>' ).html( avatarHtml ); | var $avatarWrapper = $( '<span class="sp-avatar-wrapper" style="vertical-align: middle; margin-right: 4px; display: inline-block;"></span>' ).html( avatarHtml ); | ||
$avatarWrapper.find( 'img' ).css( { | $avatarWrapper.find( 'img' ).css( { | ||
width: '2em', | |||
height: '2em', | |||
objectFit: 'cover', | |||
verticalAlign: 'middle', | |||
display: 'block' | |||
} ); | |||
$link.before( $avatarWrapper ); | $link.before( $avatarWrapper ); | ||
} | } | ||
| 第60行: | 第49行: | ||
} ); | } ); | ||
} | } | ||
addAvatarsToElements( $( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"], a[href*="/wiki/用户:"]' ) ); | addAvatarsToElements( $( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"], a[href*="/wiki/用户:"]' ) ); | ||
var observer = new MutationObserver( function ( mutations ) { | var observer = new MutationObserver( function ( mutations ) { | ||
mutations.forEach( function ( mutation ) { | mutations.forEach( function ( mutation ) { | ||
2026年2月26日 (四) 10:14的版本
//用户名前显示头像
mw.loader.using( 'mediawiki.util', function () {
$( document ).ready( function () {
function addAvatarsToElements( $elements ) {
$elements.each( function () {
var $link = $( this );
if ( $link.prev( '.sp-avatar-wrapper' ).length ) {
return;
}
if ( $link.closest( '#p-views' ).length || $link.closest( '#p-cactions' ).length || $link.closest( '#p-tb' ).length || $link.closest( '#right-navigation' ).length ) {
return;
}
var href = $link.attr( 'href' );
if ( !href ) return;
var userPart = decodeURIComponent( href.split( '/wiki/' )[1] );
if ( !userPart ) return;
if ( userPart.indexOf( '/' ) !== -1 ) {
return;
}
var userName = userPart.replace( /^User:|^用户:/, '' );
var linkText = $link.text().trim().replace(/^User:|^用户:/, '');
if ( linkText !== userName ) {
var $span = $link.find( 'span' ).first();
var spanText = $span.length ? $span.text().trim().replace(/^User:|^用户:/, '') : '';
if ( !$span.length || spanText !== userName ) {
return;
}
}
new mw.Api().get( {
action: 'parse',
text: '{{#avatar:' + userName + '|l}}',
contentmodel: 'wikitext',
disablelimitreport: true,
disableeditsection: true
} ).done( function ( data ) {
if ( data.parse && data.parse.text ) {
var avatarHtml = data.parse.text[ '*' ];
var $avatarWrapper = $( '<span class="sp-avatar-wrapper" style="vertical-align: middle; margin-right: 4px; display: inline-block;"></span>' ).html( avatarHtml );
$avatarWrapper.find( 'img' ).css( {
width: '2em',
height: '2em',
objectFit: 'cover',
verticalAlign: 'middle',
display: 'block'
} );
$link.before( $avatarWrapper );
}
} );
} );
}
addAvatarsToElements( $( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"], a[href*="/wiki/用户:"]' ) );
var observer = new MutationObserver( function ( mutations ) {
mutations.forEach( function ( mutation ) {
$( mutation.addedNodes ).find( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"], a[href*="/wiki/用户:"]' ).each( function() {
addAvatarsToElements( $( this ) );
} );
} );
} );
observer.observe( document.body, { childList: true, subtree: true } );
} );
} );