MediaWiki:Gadget-RightToolbar.js:修订间差异

删除的内容 添加的内容
XP-jia​(留言 | 贡献)
小 功能增强v2
XP-jia​(留言 | 贡献)
小 修改bug
第1行:
/* ================================================================
MediaWiki Gadget: Custom Tools Bar(多语言时间显示版)Bar with Localized Clock
功能:
- 回到顶部 / 回到底部按钮
- 实本地化日期和时时钟(间显示(浏览器时区 + UTC)
- 根据用户语言切换日期时间格式
- 深色模式自动适配
- 动态显示按钮 + 平滑动画
作者:你自己
================================================================= */
 
mw.loader.using(['mediawiki.util', 'mediawiki.userlanguage'], function () {
 
function updateClock(userLang) {
var// now = new Date();浏览器本地时间
var local = new Date();
// UTC 时间,从浏览器系统获取即可
var utc = new Date(local.getTime() + local.getTimezoneOffset() * 60000);
 
// 使用MediaWiki Intl.DateTimeFormat 根据用户提供的语言格式化设置
var localFormatteruserLang = new Intlmw.DateTimeFormatconfig.get(userLang,'wgUserLanguage') || {'en';
 
year: 'numeric', month: '2-digit', day: '2-digit',▼
// UTC 本地化格式化函数▼
// dateStyle/timeStyle 采用 Intl.DateTimeFormat 可选参数,也可以用短/长格式
var utcFormatterlocalString = new Intl.DateTimeFormat('en-US'userLang, {▼
▲ year: 'numeric', month: '2-digitlong', day: '2-digitnumeric',
hour: '2-digit', minute: '2-digit', second: '2-digit',
hour12: false, timeZoneName: 'short'
}).format(local);
var localStr = localFormatter.format(now);
 
var utcString = new Intl.DateTimeFormat(userLang, {
▲ // UTC 格式
year: 'numeric', month: '2-digitlong', day: '2-digitnumeric',▼
▲ var utcFormatter = new Intl.DateTimeFormat('en-US', {
▲ year: 'numeric', month: '2-digit', day: '2-digit',
hour: '2-digit', minute: '2-digit', second: '2-digit',
hour12: false, timeZone: 'UTC', timeZoneName: 'short'
}).format(utc);
var utcStr = utcFormatter.format(now);
 
$('#current-local-time').text(localStrlocalString);
$('#current-utc-time').text(utcStrutcString);
}
 
$(function () {
var isMobile = window.innerWidth <= 768;
 
/* ---------- 获取用户语言 ---------- */
var userLang = mw.config.get('wgUserLanguage') || 'en';
 
/* ---------- 深色模式检测 ---------- */
第81行 ⟶ 第82行:
}
 
/* ---------- 回到顶部 / 底部按钮 ---------- */
var $topButton = createButton('mw-scroll-top', '▲', '回到顶部', function () {
$('html, body').animate({ scrollTop: 0 }, { duration: 500, easing: 'swing' });
});
 
var $bottomButton = createButton('mw-scroll-bottom', '▼', '回到底部', function () {
$('html, body').animate({ scrollTop: $(document).height() }, { duration: 500, easing: 'swing' });
});
 
/* ---------- 时钟区域(桌面端) ---------- */
if (!isMobile) {
var $clockDiv = $('<div id="current-clock"></div>').css({
第103行 ⟶ 第105行:
backdropFilter: 'blur(4px)'
}).append(
$('<div id="current-local-time">加载中...</div>'),
$('<div id="current-utc-time">加载中...</div>')
);
$container.append($clockDiv);
第112行 ⟶ 第114行:
$container.append($topButton, $bottomButton);
 
/* ---------- 初次进入的动画效果 ---------- */
$container.animate({ opacity: 1, transform: 'translateY(0)' }, 600);
 
/* ---------- 时钟定时更新 ---------- */
if (!isMobile) {
updateClock(userLang);
setInterval(function () { updateClock(userLang); }, 1000);
}
 
/* ---------- 滚动动态控制按钮显示 ---------- */
$topButton.hide(); // 初始隐藏
$(window).on('scroll', function () {
var scrollTop = $(this).scrollTop();