MediaWiki:Common.js:修订间差异
| 第2行: | 第2行: | ||
mw.loader.using( 'mediawiki.util', function () { | mw.loader.using( 'mediawiki.util', function () { | ||
$( document ).ready( 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(); | |||
if ( linkText !== userName ) { | |||
var $span = $link.find( 'span' ).first(); | |||
if ( $span.length && $span.text().trim() === userName ) { | |||
} else { | |||
return; | |||
} | |||
} | |||
// 调用 API | |||
new mw.Api().get( { | |||
action: 'parse', | |||
text: '{{#avatar:' + userName + '}}', | |||
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 ); | |||
$link.before( $avatarWrapper ); | |||
} | |||
} ); | |||
} ); | |||
} | |||
addAvatarsToElements( $( 'a[href*="/wiki/User:"], a[href*="/wiki/%E7%94%A8%E6%88%B7:"]' ) ); | |||
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:"]' ).each( function() { | |||
addAvatarsToElements( $( this ) ); | |||
} ); | |||
} ); | } ); | ||
} ); | } ); | ||
observer.observe( document.body, { childList: true, subtree: true } ); | |||
} ); | } ); | ||
} ); | } ); | ||