<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-RemoveCustomSigns.js</id>
	<title>MediaWiki:Gadget-RemoveCustomSigns.js - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://zybkcn.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-RemoveCustomSigns.js"/>
	<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-RemoveCustomSigns.js&amp;action=history"/>
	<updated>2026-05-09T22:12:20Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-RemoveCustomSigns.js&amp;diff=23416&amp;oldid=prev</id>
		<title>入我相思门：​创建页面，内容为“/*     消灭中文维基个性签名 by 逆襲的天邪鬼 	取自 oldid=45750493      用法：在Special:MyPage/common.js中加入     mw.loader.load(&#039;https://zh.wikipedia.org/w/index.php?title=User:逆襲的天邪鬼/js/NoPersonalSigns.js&amp;action=raw&amp;ctype=text/javascript&#039;);      如何自定义规则：     不告诉你。  */  $(function () {     var wgServer = mw.config.get(&#039;wgServer&#039;);      // 有汰渍，没污渍     // 不过呢我不白送，你…”</title>
		<link rel="alternate" type="text/html" href="https://zybkcn.com/w/index.php?title=MediaWiki:Gadget-RemoveCustomSigns.js&amp;diff=23416&amp;oldid=prev"/>
		<updated>2022-04-30T15:43:51Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“&lt;span class=&quot;autocomment&quot;&gt;消灭中文维基个性签名 by 逆襲的天邪鬼 	取自 oldid=45750493      用法：在&lt;a href=&quot;/wiki/Special:%E6%88%91%E7%9A%84%E7%94%A8%E6%88%B7%E9%A1%B5/common.js&quot; title=&quot;Special:我的用户页/common.js&quot;&gt;Special:MyPage/common.js&lt;/a&gt;中加入     mw.loader.load(&amp;#039;https://zh.wikipedia.org/w/index.php?title=User:逆襲的天邪鬼/js/NoPersonalSigns.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;#039;);      如何自定义规则：     不告诉你。：​&lt;/span&gt;  $(function () {     var wgServer = mw.config.get(&amp;#039;wgServer&amp;#039;);      // 有汰渍，没污渍     // 不过呢我不白送，你…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/*&lt;br /&gt;
    消灭中文维基个性签名 by 逆襲的天邪鬼&lt;br /&gt;
	取自 oldid=45750493&lt;br /&gt;
&lt;br /&gt;
    用法：在[[Special:MyPage/common.js]]中加入&lt;br /&gt;
    mw.loader.load(&amp;#039;https://zh.wikipedia.org/w/index.php?title=User:逆襲的天邪鬼/js/NoPersonalSigns.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    如何自定义规则：&lt;br /&gt;
    不告诉你。&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
$(function () {&lt;br /&gt;
    var wgServer = mw.config.get(&amp;#039;wgServer&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    // 有汰渍，没污渍&lt;br /&gt;
    // 不过呢我不白送，你得自己去大润发买&lt;br /&gt;
    var blackListMode = false;&lt;br /&gt;
    var blackList = [];&lt;br /&gt;
    var tide = {};&lt;br /&gt;
    var omo = {};&lt;br /&gt;
&lt;br /&gt;
    var normalizeName = function (name) {&lt;br /&gt;
        return name.replace(/_/g, &amp;#039; &amp;#039;);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var isIP = function (name) {&lt;br /&gt;
        return name.match(&amp;#039;^\\d+\\.\\d+\\.\\d+\\.\\d+$&amp;#039;) !== null || &lt;br /&gt;
            name.match(&amp;#039;^[0-9a-fA-F]+:[0-9a-fA-F:]+$&amp;#039;) !== null;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var isNew = {};&lt;br /&gt;
&lt;br /&gt;
    var findUserName = function (node) {&lt;br /&gt;
        if (node !== null &amp;amp;&amp;amp; node.nodeType === 1) {&lt;br /&gt;
            if (node.tagName === &amp;#039;A&amp;#039;) {&lt;br /&gt;
                var href = node.href;&lt;br /&gt;
&lt;br /&gt;
                var match = href.match(wgServer + &amp;#039;/w(/index\\.php\\?.*?title=|iki/)(User:|User_talk:|Special:Contributions/|Special:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/)([^/]*?)($|\\?|&amp;amp;|#)&amp;#039;);&lt;br /&gt;
                if (match &amp;amp;&amp;amp; match[3]) {&lt;br /&gt;
                    var name = normalizeName(decodeURI(match[3]));&lt;br /&gt;
&lt;br /&gt;
                    if (node.className.indexOf(&amp;#039;new&amp;#039;) !== -1) {&lt;br /&gt;
                        if (href.indexOf(&amp;#039;User_talk:&amp;#039;) !== -1) {&lt;br /&gt;
                            isNew[&amp;#039;User talk:&amp;#039; + name] = true;&lt;br /&gt;
                        } else if (href.indexOf(&amp;#039;User:&amp;#039;) !== -1) {&lt;br /&gt;
                            isNew[&amp;#039;User:&amp;#039; + name] = true;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    return name;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                var child = node.firstChild;&lt;br /&gt;
                while (child) {&lt;br /&gt;
                    var n = findUserName(child);&lt;br /&gt;
                    if (n !== null) {&lt;br /&gt;
                        return n;&lt;br /&gt;
                    }&lt;br /&gt;
                    child = child.nextSibling;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return null;&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var killSigns = function (node) {&lt;br /&gt;
        // 确定用户名&lt;br /&gt;
        var curNode = node.previousSibling;&lt;br /&gt;
        var lastValidNode = null;&lt;br /&gt;
        var username = null;&lt;br /&gt;
        var noTideOMO = null;&lt;br /&gt;
        var i;&lt;br /&gt;
        while (curNode) {&lt;br /&gt;
            var n = findUserName(curNode);&lt;br /&gt;
            if (n !== null) {&lt;br /&gt;
                if (username === null) {&lt;br /&gt;
                    username = n;&lt;br /&gt;
                }&lt;br /&gt;
                if (n.toLowerCase() === username.toLowerCase()) {&lt;br /&gt;
                    lastValidNode = curNode;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            curNode = curNode.previousSibling;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        // 判断是否为黑名单名字&lt;br /&gt;
        if (lastValidNode === null || (blackListMode &amp;amp;&amp;amp; blackList.indexOf(username.toLowerCase()) === -1)) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 如果是自荐做什么事情的话那么再放宽点&lt;br /&gt;
        if (lastValidNode.previousSibling &amp;amp;&amp;amp; lastValidNode.previousSibling.textContent === &amp;#039;提名&amp;#039;) {&lt;br /&gt;
            curNode = lastValidNode;&lt;br /&gt;
            for (i=0; i&amp;lt;5; i++) {&lt;br /&gt;
                if (curNode.nextSibling) {&lt;br /&gt;
                    curNode = curNode.nextSibling;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            noTideOMO = curNode;&lt;br /&gt;
            while (curNode) {&lt;br /&gt;
                var n = findUserName(curNode);&lt;br /&gt;
                if (n !== null) {&lt;br /&gt;
                    if (n.toLowerCase() === username.toLowerCase()) {&lt;br /&gt;
                        lastValidNode = curNode;&lt;br /&gt;
                        break;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                curNode = curNode.nextSibling;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (isIP(username)) {&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 格杀勿论&lt;br /&gt;
        var nodes = [];&lt;br /&gt;
        curNode = lastValidNode;&lt;br /&gt;
        var rubbishindex = 1, postfix = &amp;#039;&amp;#039;;&lt;br /&gt;
        while (tide[username.toLowerCase() + postfix]) {             // 使用汰渍洗衣粉强力清洗&lt;br /&gt;
            var rubbish = tide[username.toLowerCase() + postfix];&lt;br /&gt;
            for (i=0; i&amp;lt;rubbish.length; i++) {&lt;br /&gt;
                if (curNode.previousSibling !== null &amp;amp;&amp;amp; curNode.previousSibling.tagName === rubbish[i] &amp;amp;&amp;amp; curNode.previousSibling !== noTideOMO) {&lt;br /&gt;
                    curNode = curNode.previousSibling;&lt;br /&gt;
                    rubbishindex = 0;&lt;br /&gt;
                } else {&lt;br /&gt;
                    curNode = lastValidNode;&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (rubbishindex === 0) {&lt;br /&gt;
                break;&lt;br /&gt;
            }&lt;br /&gt;
            rubbishindex++;&lt;br /&gt;
            postfix = &amp;#039;#&amp;#039; + rubbishindex;&lt;br /&gt;
        }&lt;br /&gt;
        while (curNode !== node) {&lt;br /&gt;
            nodes.push(curNode);&lt;br /&gt;
            curNode = curNode.nextSibling;&lt;br /&gt;
        }&lt;br /&gt;
        for (i = 0; i&amp;lt;nodes.length; i++) {&lt;br /&gt;
            nodes[i].remove();&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 换成干净的链接&lt;br /&gt;
        var x = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
        var y = document.createElement(&amp;#039;a&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        x.text = username;&lt;br /&gt;
        y.text = &amp;#039;留言&amp;#039;;&lt;br /&gt;
        x.className = &amp;#039;userlink&amp;#039;;&lt;br /&gt;
        y.className = &amp;#039;userlink&amp;#039;;&lt;br /&gt;
        x.href = &amp;#039;/wiki/User:&amp;#039; + username;&lt;br /&gt;
        y.href = &amp;#039;/wiki/User_talk:&amp;#039; + username;&lt;br /&gt;
&lt;br /&gt;
        if (isNew[&amp;#039;User:&amp;#039; + username]) {&lt;br /&gt;
            x.className += &amp;#039; new&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
        if (isNew[&amp;#039;User talk:&amp;#039; + username]) {&lt;br /&gt;
            y.className += &amp;#039; new&amp;#039;;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        node.parentNode.insertBefore(x, node);&lt;br /&gt;
        node.parentNode.insertBefore(document.createTextNode(&amp;#039;（&amp;#039;), node);&lt;br /&gt;
        node.parentNode.insertBefore(y, node);&lt;br /&gt;
        node.parentNode.insertBefore(document.createTextNode(&amp;#039;）&amp;#039;), node);&lt;br /&gt;
&lt;br /&gt;
        if (node.textContent.indexOf(&amp;#039;）&amp;#039;) === 0) {&lt;br /&gt;
            node.textContent = node.textContent.substr(1);&lt;br /&gt;
        }&lt;br /&gt;
        if (node.textContent.indexOf(&amp;#039;)&amp;#039;) === 0) {&lt;br /&gt;
            node.textContent = node.textContent.substr(1);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 使用奥妙全自动洗衣液，清除顽固污渍&lt;br /&gt;
        if (omo.OMO &amp;amp;&amp;amp; omo.OMO[username]) {&lt;br /&gt;
            var rubbish2 = omo.OMO[username];&lt;br /&gt;
            var prev = x.previousSibling;&lt;br /&gt;
            for (var r = 0; r&amp;lt;rubbish2.length; r++) {&lt;br /&gt;
                var reg = new RegExp(rubbish2[r], &amp;#039;g&amp;#039;);&lt;br /&gt;
                node.textContent = node.textContent.replace(reg, &amp;#039;&amp;#039;);&lt;br /&gt;
                if (prev) {&lt;br /&gt;
                    prev.textContent = prev.textContent.replace(reg, &amp;#039;&amp;#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var replace_text = function (node, search, callback) {&lt;br /&gt;
        if (node.nodeType === 3) {&lt;br /&gt;
            value = node.nodeValue;&lt;br /&gt;
            matches = value.match(search);&lt;br /&gt;
     &lt;br /&gt;
            if (matches !== null) {&lt;br /&gt;
                callback(node);&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            var children = [], child = node.firstChild;&lt;br /&gt;
            while (child) {&lt;br /&gt;
                children[children.length] = child;&lt;br /&gt;
                child = child.nextSibling;&lt;br /&gt;
            }&lt;br /&gt;
     &lt;br /&gt;
            for (var i = 0; i &amp;lt; children.length; i++) {&lt;br /&gt;
                replace_text(children[i], search, callback);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    var start = function () {&lt;br /&gt;
	    if (blackList) {&lt;br /&gt;
	        for (var i = 0; i &amp;lt; blackList.length; i++) {&lt;br /&gt;
	            blackList[i] = normalizeName(blackList[i]).toLowerCase();&lt;br /&gt;
	        }&lt;br /&gt;
	    }&lt;br /&gt;
        replace_text(document.getElementById(&amp;#039;bodyContent&amp;#039;), /(\d{4})年(\d{1,2})月(\d{1,2})日 \([一二三四五六日]\) (\d\d):(\d\d) \(UTC\)/g, killSigns);&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    // 加载个性化配置&lt;br /&gt;
    $.get(mw.config.get(&amp;#039;wgScript&amp;#039;) + &amp;#039;?title=User:&amp;#039; + mw.config.get(&amp;#039;wgUserName&amp;#039;) + &amp;#039;/NoPersonalSigns-rules.js&amp;amp;action=raw&amp;amp;ctype=text/javascript&amp;#039;).then(function (data) {&lt;br /&gt;
        eval(data);&lt;br /&gt;
        if (window.NoPersonalSigns) {&lt;br /&gt;
            blackListMode = window.NoPersonalSigns.blackListMode || false;&lt;br /&gt;
            blackList = window.NoPersonalSigns.blackList || [];&lt;br /&gt;
            tide = window.NoPersonalSigns.tide || {};&lt;br /&gt;
            omo = window.NoPersonalSigns.omo || {};&lt;br /&gt;
        }&lt;br /&gt;
    }).always(function () {&lt;br /&gt;
        start();&lt;br /&gt;
    });&lt;br /&gt;
});&lt;/div&gt;</summary>
		<author><name>入我相思门</name></author>
	</entry>
</feed>