<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://www.lvss.xyz:14014/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-blueUser.js</id>
	<title>MediaWiki:Gadget-blueUser.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://www.lvss.xyz:14014/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-blueUser.js"/>
	<link rel="alternate" type="text/html" href="http://www.lvss.xyz:14014/index.php?title=MediaWiki:Gadget-blueUser.js&amp;action=history"/>
	<updated>2026-10-04T02:32:22Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>http://www.lvss.xyz:14014/index.php?title=MediaWiki:Gadget-blueUser.js&amp;diff=2431&amp;oldid=prev</id>
		<title>2026年9月30日 (三) 18:11 Shio</title>
		<link rel="alternate" type="text/html" href="http://www.lvss.xyz:14014/index.php?title=MediaWiki:Gadget-blueUser.js&amp;diff=2431&amp;oldid=prev"/>
		<updated>2026-09-30T18:11:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://www.lvss.xyz:14014/index.php?title=MediaWiki:Gadget-blueUser.js&amp;amp;diff=2431&amp;amp;oldid=2418&quot;&gt;显示更改&lt;/a&gt;</summary>
		<author><name>Shio</name></author>
	</entry>
	<entry>
		<id>http://www.lvss.xyz:14014/index.php?title=MediaWiki:Gadget-blueUser.js&amp;diff=2418&amp;oldid=prev</id>
		<title>Shio：​创建页面，内容为“mw.loader.using( [ &#039;mediawiki.api&#039;, &#039;mediawiki.util&#039; ] ).then( function () { 	const namespaceIds = mw.config.get(&#039;wgNamespaceIds&#039;); 	const namespaces = Object.keys( namespaceIds ).filter( ns =&gt; namespaceIds[ns] === 2 ); 	const selector = namespaces.map( ns =&gt; mw.config.get(&#039;wgArticlePath&#039;).replace(&#039;$1&#039;, ns + &#039;:&#039;).toLowerCase() ); 	// User cache to not check them multiple times. 	var blueUsers = []; 	var missingUsers = []; 	if ( mw.config.get(&#039;wgUserName&#039;) ) {…”</title>
		<link rel="alternate" type="text/html" href="http://www.lvss.xyz:14014/index.php?title=MediaWiki:Gadget-blueUser.js&amp;diff=2418&amp;oldid=prev"/>
		<updated>2026-09-30T06:22:22Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“mw.loader.using( [ &amp;#039;mediawiki.api&amp;#039;, &amp;#039;mediawiki.util&amp;#039; ] ).then( function () { 	const namespaceIds = mw.config.get(&amp;#039;wgNamespaceIds&amp;#039;); 	const namespaces = Object.keys( namespaceIds ).filter( ns =&amp;gt; namespaceIds[ns] === 2 ); 	const selector = namespaces.map( ns =&amp;gt; mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;#039;$1&amp;#039;, ns + &amp;#039;:&amp;#039;).toLowerCase() ); 	// User cache to not check them multiple times. 	var blueUsers = []; 	var missingUsers = []; 	if ( mw.config.get(&amp;#039;wgUserName&amp;#039;) ) {…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;mw.loader.using( [ &amp;#039;mediawiki.api&amp;#039;, &amp;#039;mediawiki.util&amp;#039; ] ).then( function () {&lt;br /&gt;
	const namespaceIds = mw.config.get(&amp;#039;wgNamespaceIds&amp;#039;);&lt;br /&gt;
	const namespaces = Object.keys( namespaceIds ).filter( ns =&amp;gt; namespaceIds[ns] === 2 );&lt;br /&gt;
	const selector = namespaces.map( ns =&amp;gt; mw.config.get(&amp;#039;wgArticlePath&amp;#039;).replace(&amp;#039;$1&amp;#039;, ns + &amp;#039;:&amp;#039;).toLowerCase() );&lt;br /&gt;
	// User cache to not check them multiple times.&lt;br /&gt;
	var blueUsers = [];&lt;br /&gt;
	var missingUsers = [];&lt;br /&gt;
	if ( mw.config.get(&amp;#039;wgUserName&amp;#039;) ) {&lt;br /&gt;
		blueUsers.push( mw.util.wikiUrlencode( mw.config.get(&amp;#039;wgUserName&amp;#039;) ) );&lt;br /&gt;
	}&lt;br /&gt;
	var api = new mw.Api( {&lt;br /&gt;
		parameters: {&lt;br /&gt;
			action: &amp;#039;query&amp;#039;,&lt;br /&gt;
			list: &amp;#039;users&amp;#039;,&lt;br /&gt;
			formatversion: 2&lt;br /&gt;
		},&lt;br /&gt;
		userAgent: &amp;#039;Gadget-blueUsers&amp;#039;&lt;br /&gt;
	} );&lt;br /&gt;
	&lt;br /&gt;
	// Run every time content is added&lt;br /&gt;
	mw.hook( &amp;#039;wikipage.content&amp;#039; ).add( makeUsersBlue );&lt;br /&gt;
	// Catch links outside the content area&lt;br /&gt;
	makeUsersBlue( $(&amp;#039;a.new&amp;#039;).not(&amp;#039;#mw-content-text a.new&amp;#039;).parent() );&lt;br /&gt;
	&lt;br /&gt;
	function makeUsersBlue( $content ) {&lt;br /&gt;
		var users = [];&lt;br /&gt;
		var userlinks = $content.find(&amp;#039;a.new&amp;#039;).filter( function () {&lt;br /&gt;
			var pathname = decodeURIComponent( this.pathname ).toLowerCase();&lt;br /&gt;
			return selector.some( ns =&amp;gt; pathname.startsWith( ns ) );&lt;br /&gt;
		} ).each( function () {&lt;br /&gt;
			var encodedUsername = this.pathname.split(&amp;#039;:&amp;#039;)[1];&lt;br /&gt;
			if ( missingUsers.includes( encodedUsername ) ) return;&lt;br /&gt;
			if ( blueUsers.includes( encodedUsername ) ) {&lt;br /&gt;
				this.href = this.pathname;&lt;br /&gt;
				this.classList.remove( &amp;#039;new&amp;#039; );&lt;br /&gt;
				this.classList.add( &amp;#039;mw-newuserlink&amp;#039; );&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
			var username = decodeURIComponent( encodedUsername );&lt;br /&gt;
			if ( users.includes( username ) || username.includes( &amp;#039;/&amp;#039; ) ) return;&lt;br /&gt;
			users.push( username );&lt;br /&gt;
		} );&lt;br /&gt;
		if ( !users.length ) return;&lt;br /&gt;
		var apiRequests = [];&lt;br /&gt;
		while ( users.length ) {&lt;br /&gt;
			apiRequests.push( api.get( {&lt;br /&gt;
				ususers: users.splice(0, 50)&lt;br /&gt;
			} ).then( function ( data ) {&lt;br /&gt;
				data.query.users.forEach( function ( user ) {&lt;br /&gt;
					if ( user.missing || user.invalid ) {&lt;br /&gt;
						missingUsers.push( mw.util.wikiUrlencode( user.name ) );&lt;br /&gt;
						return;&lt;br /&gt;
					}&lt;br /&gt;
					blueUsers.push( mw.util.wikiUrlencode( user.name ) );&lt;br /&gt;
				} );&lt;br /&gt;
			} ) );&lt;br /&gt;
		}&lt;br /&gt;
		Promise.all( apiRequests ).then( function () {&lt;br /&gt;
			userlinks.each( function () {&lt;br /&gt;
				if ( !blueUsers.includes( this.pathname.split(&amp;#039;:&amp;#039;)[1] ) ) return;&lt;br /&gt;
				this.href = this.pathname;&lt;br /&gt;
				this.classList.remove( &amp;#039;new&amp;#039; );&lt;br /&gt;
				this.classList.add( &amp;#039;mw-newuserlink&amp;#039; );&lt;br /&gt;
			} );&lt;br /&gt;
		} );&lt;br /&gt;
	}&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Shio</name></author>
	</entry>
</feed>