打开/关闭搜索
搜索
打开/关闭菜单
228
885
35
2802
植物大战僵尸杂交版Wiki
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
打开/关闭外观设置菜单
notifications
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
创建账号
登录
查看“︁MediaWiki:Common.js”︁的源代码
MediaWiki界面页面
查看
阅读
查看源代码
查看历史
associated-pages
系统消息
讨论
更多操作
←
MediaWiki:Common.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */ // 自动加载 MediaWiki:Footer 页面内容,并插入到每个页面底部 $(document).ready(function() { const namespace = mw.config.get('wgNamespaceNumber'); const action = mw.config.get('wgAction'); if (namespace !== 0 || action !== 'view') { return; } fetch("/api.php?action=parse&page=MediaWiki:Footer&format=json") .then(res => res.json()) .then(data => { if (data.parse && data.parse.text) { const html = data.parse.text['*']; $('#mw-content-text').append('<div class="global-footer">' + html + '</div>'); } }); }); $(function () { // 动态注入彩虹样式 var rainbowStyle = document.createElement('style'); rainbowStyle.textContent = '.rainbow-user {' + 'font-weight: bold;' + 'background: repeating-linear-gradient(90deg, red 0px, orange 10px, yellow 20px, green 30px, blue 40px, indigo 50px, violet 60px);' + '-webkit-background-clip: text;' + '-webkit-text-fill-color: transparent;' + 'background-clip: text;' + 'color: #FFD700;' + '}' + '.rainbow-user::after {' + 'content: "⭐⭐⭐⭐⭐";' + 'margin-left: 2px;' + 'font-weight: normal;' + '-webkit-text-fill-color: initial;' + 'color: #FFD700;' + '}'; document.head.appendChild(rainbowStyle); // ---------- 辅助函数 ---------- // 从链接元素中提取纯净用户名(卡片内有<span>,取span文本) function getUserName(link) { var $span = $(link).find('span').first(); if ($span.length) { return $span.text().trim(); } return $(link).text().trim(); } // 给一组链接批量上色 function applyColorsToLinks($links) { if ($links.length === 0) return; // 收集去重用户名 var users = []; $links.each(function () { var name = getUserName(this); if (name && users.indexOf(name) === -1) users.push(name); }); if (users.length === 0) return; // 分批查询 API var batchSize = 50; var batches = []; for (var i = 0; i < users.length; i += batchSize) { batches.push(users.slice(i, i + batchSize)); } var processBatch = function (batch) { var api = new mw.Api(); return api.get({ action: 'query', list: 'users', ususers: batch.join('|'), usprop: 'editcount' }).then(function (data) { var classMap = {}; if (data.query && data.query.users) { data.query.users.forEach(function (u) { var ec = u.editcount || 0; if (ec >= 5000) { classMap[u.name] = 'rainbow-user'; } else if (ec >= 2000) { classMap[u.name] = 'gold-user'; } else if (ec >= 1000) { classMap[u.name] = 'platinum-user'; } else if (ec >= 500) { classMap[u.name] = 'silver-user'; } else if (ec >= 1) { classMap[u.name] = 'bronze-user'; } }); } // 应用类名 $links.each(function () { var $this = $(this); var userName = getUserName(this); var cls = classMap[userName]; if (cls) { $this.removeClass('bronze-user silver-user platinum-user gold-user rainbow-user'); $this.addClass(cls); } }); }); }; // 顺序执行批次 var promise = $.Deferred().resolve(); batches.forEach(function (batch) { promise = promise.then(function () { return processBatch(batch); }); }); } // ---------- 1. 处理页面初始就存在的用户链接 ---------- var $initialLinks = $('a.mw-userlink, .citizen-menu_card-content a'); applyColorsToLinks($initialLinks); // ---------- 2. 监听动态插入的卡片(MutationObserver) ---------- var observer = new MutationObserver(function (mutations) { var addedLinks = []; mutations.forEach(function (mutation) { $(mutation.addedNodes).each(function () { // 如果新增的是一个元素节点 if (this.nodeType === 1) { // 直接在新增节点及其后代中找目标链接 var $newLinks = $(this).find('a.mw-userlink, .citizen-menu_card-content a'); // 也包含该节点本身就是目标链接的情况 if ($(this).is('a.mw-userlink, .citizen-menu_card-content a')) { $newLinks = $newLinks.add($(this)); } if ($newLinks.length > 0) { addedLinks = addedLinks.concat($newLinks.toArray()); } } }); }); if (addedLinks.length > 0) { applyColorsToLinks($(addedLinks)); } }); // 监视整个文档的子节点变化(卡片通常插入到 body 或某个容器) observer.observe(document.body, { childList: true, subtree: true }); });
返回
MediaWiki:Common.js
。
查看“︁MediaWiki:Common.js”︁的源代码
MediaWiki界面页面