跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机条目
特殊页面
站点
关于陋室
维基社群
新闻动态
联系我们
活跃用户
统计
参与
上传文件
待撰页面
新建页面
编辑入门
帮助
内容
分类树
所有页面
前缀索引
最多链入页面
热门页面
维护
MediaWiki 消息页
系统消息
小工具管理
小工具定义
用户组权限
界面
侧边栏
英文侧边栏
站点公告
匿名用户通知
公共样式表
公共脚本
陋室
搜索
搜索
中文
外观
登录
个人工具
登录
沙盒
查看“︁MediaWiki:Gadget-RightToolbar.js”︁的源代码
系统消息
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
页面信息
Cargo数据
获取短链接
外观
移至侧栏
隐藏
←
MediaWiki:Gadget-RightToolbar.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
用户
、
自动确认用户
本页面提供本维基软件的界面文本,并受到保护以防止滥用。 要添加或更改所有维基的翻译,请使用MediaWiki的本地化项目
translatewiki.net
。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有网站访客。
您可以查看和复制此页面的源代码。
/* ================================================================ MediaWiki Gadget: Localized Clock Bar (增强版) 功能: - 显示浏览器本地时间和 UTC 时间 - 使用 MediaWiki 用户语言格式 - 动态响应语言切换,无需刷新 - 深色模式适配 + 滑入动画 作者:你自己 ================================================================= */ mw.loader.using(['mediawiki.util'], function () { // 工具栏主函数 function initClockBar() { var isMobile = window.innerWidth <= 768; // ---------- 深色模式检测 ---------- const isDark = window.matchMedia('(prefers-color-scheme: dark)').matches; const bg = isDark ? 'rgba(40,40,40,0.85)' : 'rgba(255,255,255,0.85)'; const border = isDark ? '#555' : '#aaa'; const color = isDark ? '#eee' : '#333'; // ---------- 创建工具栏容器 ---------- var $container = $('#mw-custom-tools'); if (!$container.length) { $container = $('<div id="mw-custom-tools"></div>').css({ position: 'fixed', bottom: '120px', right: '50px', display: 'flex', flexDirection: 'column', alignItems: 'flex-end', gap: '5px', zIndex: 9999, opacity: 0, transform: 'translateY(20px)', // 初始位置 }).appendTo('body'); } // ---------- 按钮生成函数 ---------- function createButton(id, text, tooltip, clickHandler) { return $('<div></div>', { id: id, title: tooltip, text: text }).css({ padding: '5px 10px', fontSize: '12px', background: bg, border: '1px solid ' + border, borderRadius: '4px', boxShadow: '0 1px 3px rgba(0,0,0,0.2)', color: color, cursor: 'pointer', textAlign: 'center', opacity: 0.7, transition: 'background 0.3s, opacity 0.3s, transform 0.3s', backdropFilter: 'blur(4px)' }).hover( function () { $(this).css({ background: isDark ? '#555' : '#ddd', opacity: 1 }); }, function () { $(this).css({ background: bg, opacity: 0.7 }); } ).click(clickHandler); } // ---------- 创建按钮 ---------- var $topButton = $('#mw-scroll-top'); if (!$topButton.length) { $topButton = createButton('mw-scroll-top', '▲', '回到顶部', function () { $('html, body').animate({ scrollTop: 0 }, { duration: 500, easing: 'swing' }); }); $container.append($topButton); } var $bottomButton = $('#mw-scroll-bottom'); if (!$bottomButton.length) { $bottomButton = createButton('mw-scroll-bottom', '▼', '回到底部', function () { $('html, body').animate({ scrollTop: $(document).height() }, { duration: 500, easing: 'swing' }); }); $container.append($bottomButton); } // ---------- 时钟容器(桌面端) ---------- var $clockDiv = $('#current-clock'); if (!isMobile && !$clockDiv.length) { $clockDiv = $('<div id="current-clock"></div>').css({ padding: '6px 12px', fontSize: '12px', background: bg, border: '1px solid ' + border, borderRadius: '4px', boxShadow: '0 1px 3px rgba(0,0,0,0.2)', color: color, textAlign: 'center', lineHeight: '1.4', backdropFilter: 'blur(4px)' }).append( $('<div id="local-date">加载中...</div>'), $('<div id="local-time"></div>'), $('<div id="utc-time"></div>') ); $container.append($clockDiv); } // ---------- 滚动动态显示 ---------- $topButton.hide(); // 初始隐藏 $(window).on('scroll', function () { var scrollTop = $(this).scrollTop(); if (scrollTop > 200) $topButton.fadeIn(); else $topButton.fadeOut(); }); // ---------- 初始动画 ---------- $container.animate({ opacity: 1, transform: 'translateY(0)' }, 600); // ---------- 渲染时钟函数 ---------- function renderClock() { var now = new Date(); // 获取 MediaWiki 用户语言(wgUserLanguage) var userLang = mw.config.get('wgUserLanguage') || 'en'; // 本地时间 var localFormatter = new Intl.DateTimeFormat(userLang, { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone }); var localParts = localFormatter.formatToParts(now); var localDateStr = localParts.filter(p => p.type === 'year' || p.type === 'month' || p.type === 'day') .map(p => p.value).join(' '); var localTimeStr = localParts.filter(p => p.type === 'hour' || p.type === 'minute' || p.type === 'second') .map(p => p.value).join(':'); $('#local-date').text('本地日期: ' + localDateStr); $('#local-time').text('本地时间: ' + localTimeStr); // UTC 时间 var utcFormatter = new Intl.DateTimeFormat(userLang, { year: 'numeric', month: 'long', day: 'numeric', hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false, timeZone: 'UTC' }); var utcParts = utcFormatter.formatToParts(now); var utcDateStr = utcParts.filter(p => p.type === 'year' || p.type === 'month' || p.type === 'day') .map(p => p.value).join(' '); var utcTimeStr = utcParts.filter(p => p.type === 'hour' || p.type === 'minute' || p.type === 'second') .map(p => p.value).join(':'); $('#utc-time').text('UTC 时间: ' + utcDateStr + ' ' + utcTimeStr); } // ---------- 定时刷新 ---------- setInterval(renderClock, 1000); renderClock(); // 启动立即渲染 // ---------- 语言切换动态刷新 ---------- // MediaWiki 用户语言修改后触发 user.languageChange hook mw.hook('user.languageChange').add(renderClock); } // 初始化工具条 $(initClockBar); });
返回
MediaWiki:Gadget-RightToolbar.js
。
搜索
搜索
查看“︁MediaWiki:Gadget-RightToolbar.js”︁的源代码
添加语言
添加话题