MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

Gadget:ReplaceUsername.js:修订间差异

来自MCBBS Wiki
跳到导航 跳到搜索
(里面用到了ES6的功能,MediaWiki不支持ES6的代码压缩,所以另找一个页面写)
(没有差异)

2020年12月19日 (六) 10:21的版本

(function () {
    console.log(`MediaWiki用户名替换脚本运行中
///////////////////////////////////////////////////////
// 许可证 License                                     //
// 协议:CC BY-NC-SA 4.0                              //
// 作者:Salt_lovely                                  //
// 出处:MCBBS Wiki - https://mcbbs-wiki.cn           //
// 必须保留此许可证,并以相同的许可证分发               //
// 不接受任何形式的“别名”“昵称”或其他方式尝试绕过许可证 //
// 若协议冲突或不接受以上额外条款,你可以选择不搬运     //
///////////////////////////////////////////////////////
    `)
    /**改名表 */
    let map = [
        ['Beanflame', 'beanflame'],
        ['Salt_lovely', '盐酱'],
    ]
    // 执行一次
    replaceUsername()
    // 窗口加载完毕后再运行一次,以防漏网之鱼
    window.addEventListener('load', replaceUsername)
    /**修改用户名显示功能 */
    function replaceUsername() {
        for (let el of getUname()) {
            for (let m of map) {
                if (el.textContent == m[0] || el.textContent == mwUsernameTurn(m[0])) {
                    el.textContent = m[1]
                    if (el.hasAttribute('title')) {
                        el.setAttribute('title', el.getAttribute('title') + ' | 原名: ' + m[0])
                    } else {
                        el.setAttribute('title', '原名: ' + m[0])
                    }
                    break
                }
            }
            el.setAttribute('renamed', '')
        }
        /**获取可能出现用户名的元素 */
        function getUname() {
            // 所有常见的用户名链接
            let a = Array.from(document.querySelectorAll('a.mw-userlink bdi:not([renamed])'))
            // 顶栏的用户名
            let topyn = document.querySelector('#pt-userpage a:not([renamed])')
            if (topyn)
                a.push(topyn)
            return a
        }
        /**MediaWiki会在一些地方用空格代替下划线 */
        function mwUsernameTurn(unRaw) {
            while (unRaw.indexOf('_') != -1)
                unRaw = unRaw.replace('_', ' ')
            return unRaw
        }
    }
})()