跳转到内容

MediaWiki:Common.js:修订间差异

来自失传媒体中文维基
HW
HW留言 | 贡献
HW
HW留言 | 贡献
第2行: 第2行:
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 () {
         function addAvatarsToElements( $elements ) {
            var $link = $( this );
            $elements.each( function () {
            if ( $link.prev( '.sp-avatar-wrapper' ).length ) {
                var $link = $( this );
                return;
 
            }
                if ( $link.prev( '.sp-avatar-wrapper' ).length ) {
            var href = $link.attr( 'href' );
                    return;
            var userName = decodeURIComponent( href.split( '/wiki/' )[1] ).replace( /^User:|^用户:/, '' );
           
            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 );
                 }
                 }
                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 } );
     } );
     } );
} );
} );

2026年2月26日 (四) 09:56的版本

//用户名前显示头像
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();
                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 } );
    } );
} );