XIAOBAIMAO233(留言 | 贡献) 小无编辑摘要 标签:手工回退 |
XIAOBAIMAO233(留言 | 贡献) 无编辑摘要 标签:已被回退 |
||
| 第36行: | 第36行: | ||
} else { | } else { | ||
setTimeout( run, 1500 ); | setTimeout( run, 1500 ); | ||
} | |||
} )() | |||
/* ===================================================== | |||
首页深色模式适配 | |||
首页大量使用内联硬编码颜色,深色模式下不会自动翻转。 | |||
运行时把内联颜色替换为 CSS 变量,让主题自动切换。 | |||
===================================================== */ | |||
( function () { | |||
function getPageName() { | |||
if ( window.mw && mw.config ) return mw.config.get( 'wgPageName' ); | |||
return null; | |||
} | |||
function replaceColors() { | |||
var nodes = document.querySelectorAll( '[style]' ); | |||
/* 顺序很重要:先处理组合属性,再处理单个颜色 */ | |||
var map = [ | |||
/* 主要信息标题栏:作为背景的 #111827 必须最先处理 */ | |||
[ /background(?:-color)?\s*:\s*#111827\b/gi, 'background:var(--xh-header-bar-bg)' ], | |||
/* 背景色 */ | |||
[ /#ffffff\b/gi, 'var(--xh-card-bg)' ], | |||
[ /#fbfefe\b/gi, 'var(--xh-card-bg-soft)' ], | |||
[ /#f3f4f6\b/gi, 'var(--xh-cover-bg)' ], | |||
/* 边框色 */ | |||
[ /#e5e7eb\b/gi, 'var(--xh-border)' ], | |||
[ /#f0f0f0\b/gi, 'var(--xh-border-inner)' ], | |||
/* 文字色(#111827 剩下的都是文字,因为背景已在上面单独处理) */ | |||
[ /#111827\b/gi, 'var(--xh-text-strong)' ], | |||
[ /#4b5563\b/gi, 'var(--xh-text)' ], | |||
[ /#6b7280\b/gi, 'var(--xh-text-soft)' ], | |||
[ /#9ca3af\b/gi, 'var(--xh-text-faint)' ] | |||
]; | |||
for ( var i = 0; i < nodes.length; i++ ) { | |||
var el = nodes[ i ]; | |||
var s = el.getAttribute( 'style' ); | |||
if ( !s ) continue; | |||
var changed = false; | |||
for ( var j = 0; j < map.length; j++ ) { | |||
var re = map[ j ][ 0 ]; | |||
re.lastIndex = 0; | |||
if ( re.test( s ) ) { | |||
re.lastIndex = 0; | |||
s = s.replace( re, map[ j ][ 1 ] ); | |||
changed = true; | |||
} | |||
} | |||
if ( changed ) el.setAttribute( 'style', s ); | |||
} | |||
} | |||
function init() { | |||
if ( getPageName() !== '首页' ) return; | |||
replaceColors(); | |||
} | |||
if ( document.readyState === 'loading' ) { | |||
document.addEventListener( 'DOMContentLoaded', init ); | |||
} else { | |||
init(); | |||
} | } | ||
} )(); | } )(); | ||
2026年9月23日 (三) 23:54的版本
( function () {
function run() {
var el = document.getElementById( 'xh-server-status' );
if ( !el ) return;
var ctrl = new AbortController();
var timer = setTimeout( function () { ctrl.abort(); }, 6000 );
fetch( 'https://api.mcsrvstat.us/3/game.xhcity.top', {
signal: ctrl.signal,
cache: 'no-store'
} )
.then( function ( r ) {
clearTimeout( timer );
if ( !r.ok ) throw new Error( r.status );
return r.json();
} )
.then( function ( data ) {
if ( data.online ) {
var online = data.players ? data.players.online : 0;
var max = data.players ? data.players.max : '?';
el.innerHTML = '<span style="color:#17b3a8; font-weight:700;">● 服务器运行中</span>' +
' · 在线人数:<b style="color:#111827;">' + online + '</b> / ' + max;
} else {
el.innerHTML = '<span style="color:#d22; font-weight:700;">● 服务器已离线</span>';
}
} )
.catch( function () {
el.innerHTML = '<span style="color:#9ca3af;">● 状态暂时无法获取</span>';
} );
}
/* 等首屏空闲后再请求,避免和页面渲染抢资源 */
if ( 'requestIdleCallback' in window ) {
requestIdleCallback( run, { timeout: 3000 } );
} else {
setTimeout( run, 1500 );
}
} )()
/* =====================================================
首页深色模式适配
首页大量使用内联硬编码颜色,深色模式下不会自动翻转。
运行时把内联颜色替换为 CSS 变量,让主题自动切换。
===================================================== */
( function () {
function getPageName() {
if ( window.mw && mw.config ) return mw.config.get( 'wgPageName' );
return null;
}
function replaceColors() {
var nodes = document.querySelectorAll( '[style]' );
/* 顺序很重要:先处理组合属性,再处理单个颜色 */
var map = [
/* 主要信息标题栏:作为背景的 #111827 必须最先处理 */
[ /background(?:-color)?\s*:\s*#111827\b/gi, 'background:var(--xh-header-bar-bg)' ],
/* 背景色 */
[ /#ffffff\b/gi, 'var(--xh-card-bg)' ],
[ /#fbfefe\b/gi, 'var(--xh-card-bg-soft)' ],
[ /#f3f4f6\b/gi, 'var(--xh-cover-bg)' ],
/* 边框色 */
[ /#e5e7eb\b/gi, 'var(--xh-border)' ],
[ /#f0f0f0\b/gi, 'var(--xh-border-inner)' ],
/* 文字色(#111827 剩下的都是文字,因为背景已在上面单独处理) */
[ /#111827\b/gi, 'var(--xh-text-strong)' ],
[ /#4b5563\b/gi, 'var(--xh-text)' ],
[ /#6b7280\b/gi, 'var(--xh-text-soft)' ],
[ /#9ca3af\b/gi, 'var(--xh-text-faint)' ]
];
for ( var i = 0; i < nodes.length; i++ ) {
var el = nodes[ i ];
var s = el.getAttribute( 'style' );
if ( !s ) continue;
var changed = false;
for ( var j = 0; j < map.length; j++ ) {
var re = map[ j ][ 0 ];
re.lastIndex = 0;
if ( re.test( s ) ) {
re.lastIndex = 0;
s = s.replace( re, map[ j ][ 1 ] );
changed = true;
}
}
if ( changed ) el.setAttribute( 'style', s );
}
}
function init() {
if ( getPageName() !== '首页' ) return;
replaceColors();
}
if ( document.readyState === 'loading' ) {
document.addEventListener( 'DOMContentLoaded', init );
} else {
init();
}
} )();