-
汇聚密码安全智慧 共享实战经验!
我们目前有643个页面,13个用户,731次编辑。
查看“MediaWiki:Mobile.js”的源代码
←
MediaWiki:Mobile.js
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
// 调试版本的 Mobile.js // 如果正常版本不工作,可以使用这个版本查看调试信息 (function() { 'use strict'; function log(message) { if (typeof console !== 'undefined' && console.log) { console.log('[SiteNotice] ' + message); } } // 初始化用户提示 function initUserPrompt() { log('开始初始化用户提示'); var siteNoticeScroll = $('#siteNoticeScroll'); log('siteNoticeScroll 元素数量: ' + siteNoticeScroll.length); if (siteNoticeScroll.length === 0) { log('未找到 siteNoticeScroll 元素'); return false; } var ul = siteNoticeScroll.find('ul:first'); log('ul 元素数量: ' + ul.length); if (ul.length === 0) { log('未找到 ul 元素'); return false; } var existingLis = ul.find('li'); log('现有 li 元素数量: ' + existingLis.length); var currentUser = null; try { if (typeof mw !== 'undefined' && mw.config && mw.config.get) { currentUser = mw.config.get('wgUserName'); log('当前用户: ' + (currentUser || '未登录')); } } catch (e) { log('获取用户信息失败: ' + e.message); } var promptElement = $('#userPrompt'); log('现有 userPrompt 元素数量: ' + promptElement.length); // 如果页面没有 userPrompt 元素,创建一个 if (promptElement.length === 0) { log('创建新的 userPrompt 元素'); promptElement = $('<li id="userPrompt"></li>'); ul.append(promptElement); log('userPrompt 元素已添加到 DOM'); } // 设置内容 var content = ''; if (currentUser && currentUser !== null && currentUser !== '') { content = '<strong>欢迎回来,' + currentUser + '!感谢您对炼石百科的贡献!</strong>'; log('设置已登录用户内容'); } else { content = '<strong>欢迎加入炼石百科<a href="/wiki/Special:用户登录"><font color="#3862AE">注册一个账号</font></a>,一起参与编写吧!</strong>'; log('设置未登录用户内容'); } promptElement.html(content); log('userPrompt 内容已设置'); // 验证元素是否存在 var finalLis = ul.find('li'); log('最终 li 元素数量: ' + finalLis.length); return true; } // 初始化公告滚动 function initSiteNoticeScroll() { log('开始初始化滚动效果'); var self = $('#siteNoticeScroll'); if (!self.length || !self[0]) { log('未找到 siteNoticeScroll 元素'); return; } var ul = self.find('ul:first'); if (!ul.length) { log('未找到 ul 元素'); return; } var lis = ul.find('li'); log('找到 ' + lis.length + ' 个 li 元素'); if (lis.length <= 1) { log('li 元素数量不足,不需要滚动'); return; } var containerWidth = self.width(); log('容器宽度: ' + containerWidth); if (containerWidth === 0) { log('容器宽度为0,延迟重试'); setTimeout(initSiteNoticeScroll, 100); return; } // 设置 ul 和 li 的宽度 ul.css({ 'width': (containerWidth * lis.length) + 'px', '-webkit-transform': 'translateX(0px)', '-moz-transform': 'translateX(0px)', '-ms-transform': 'translateX(0px)', '-o-transform': 'translateX(0px)', 'transform': 'translateX(0px)', '-webkit-transition': 'transform 0.73s ease-in-out', '-moz-transition': 'transform 0.73s ease-in-out', '-o-transition': 'transform 0.73s ease-in-out', 'transition': 'transform 0.73s ease-in-out' }).attr({ 'data-left': 0, 'data-length': lis.length }); lis.css('width', containerWidth + 'px'); log('设置 ul 宽度: ' + (containerWidth * lis.length) + ', 每个 li 宽度: ' + containerWidth); // 强制重绘 ul[0].offsetHeight; // 开始滚动 var scrollInterval = window.setInterval(function() { var dataset = ul[0].dataset; if (!dataset) { log('无法获取 dataset'); return; } var currentLeft = parseInt(dataset.left) || 0; var totalLength = parseInt(dataset.length) || lis.length; var newLeft = currentLeft + 1; log('当前索引: ' + currentLeft + ', 总长度: ' + totalLength + ', 新索引: ' + newLeft); // 如果到达最后一个,重置到第一个(索引0) if (newLeft >= totalLength) { newLeft = 0; log('重置到开始位置'); } var translateX = -(newLeft * containerWidth); // 重置时先移除 transition,立即跳转,然后恢复 if (newLeft === 0) { ul.css({ '-webkit-transition': 'none', '-moz-transition': 'none', '-o-transition': 'none', 'transition': 'none', '-webkit-transform': 'translateX(0px)', '-moz-transform': 'translateX(0px)', '-ms-transform': 'translateX(0px)', '-o-transform': 'translateX(0px)', 'transform': 'translateX(0px)' }); ul[0].offsetHeight; // 强制重绘 setTimeout(function() { ul.css({ '-webkit-transition': 'transform 0.73s ease-in-out', '-moz-transition': 'transform 0.73s ease-in-out', '-o-transition': 'transform 0.73s ease-in-out', 'transition': 'transform 0.73s ease-in-out' }); }, 50); log('设置 transform: translateX(0px)'); } else { ul.css({ '-webkit-transition': 'transform 0.73s ease-in-out', '-moz-transition': 'transform 0.73s ease-in-out', '-o-transition': 'transform 0.73s ease-in-out', 'transition': 'transform 0.73s ease-in-out', '-webkit-transform': 'translateX(' + translateX + 'px)', '-moz-transform': 'translateX(' + translateX + 'px)', '-ms-transform': 'translateX(' + translateX + 'px)', '-o-transform': 'translateX(' + translateX + 'px)', 'transform': 'translateX(' + translateX + 'px)' }); log('设置 transform: translateX(' + translateX + 'px)'); } dataset.left = newLeft; }, 5000); log('滚动定时器已启动,间隔: 5000ms'); // 窗口大小改变时重新计算 $(window).on('resize', function() { log('窗口大小改变'); containerWidth = self.width(); if (containerWidth === 0) return; ul.css('width', (containerWidth * lis.length) + 'px'); lis.css('width', containerWidth + 'px'); var currentLeft = parseInt(ul[0].dataset.left) || 0; if (currentLeft < 0) currentLeft = 0; var translateX = -(currentLeft * containerWidth); ul.css({ '-webkit-transition': 'transform 0.37s ease-in-out', '-moz-transition': 'transform 0.37s ease-in-out', '-o-transition': 'transform 0.37s ease-in-out', 'transition': 'transform 0.37s ease-in-out', '-webkit-transform': 'translateX(' + translateX + 'px)', '-moz-transform': 'translateX(' + translateX + 'px)', '-ms-transform': 'translateX(' + translateX + 'px)', '-o-transform': 'translateX(' + translateX + 'px)', 'transform': 'translateX(' + translateX + 'px)' }); }); // 保存 interval ID self.data('scrollInterval', scrollInterval); } // 等待 DOM 和 MediaWiki 加载完成 function init() { log('开始初始化'); log('jQuery 版本: ' + (typeof $ !== 'undefined' ? $.fn.jquery : '未加载')); log('MediaWiki 版本: ' + (typeof mw !== 'undefined' ? '已加载' : '未加载')); // 先初始化用户提示(必须在滚动初始化之前) var promptAdded = initUserPrompt(); log('用户提示初始化结果: ' + promptAdded); // 延迟初始化滚动效果,确保 DOM 完全更新 setTimeout(function() { initSiteNoticeScroll(); }, promptAdded ? 100 : 0); } // 多种初始化方式 if (typeof $ !== 'undefined') { log('jQuery 已加载,使用 jQuery ready'); $(document).ready(function() { log('jQuery ready 触发'); init(); }); if (document.readyState === 'complete' || document.readyState === 'interactive') { log('文档已加载,立即执行'); setTimeout(init, 100); } } else { log('jQuery 未加载,等待加载'); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { log('DOMContentLoaded 触发'); if (typeof $ !== 'undefined') { setTimeout(init, 100); } }); } else { var checkJQuery = setInterval(function() { if (typeof $ !== 'undefined') { log('jQuery 已加载'); clearInterval(checkJQuery); init(); } }, 100); setTimeout(function() { clearInterval(checkJQuery); }, 10000); } } // 使用 MediaWiki 的 hook if (typeof mw !== 'undefined' && mw.hook) { log('注册 mobile.init hook'); mw.hook('mobile.init').add(function() { log('mobile.init hook 触发'); setTimeout(init, 200); }); } log('脚本加载完成'); })();
返回
MediaWiki:Mobile.js
。
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
系统消息
讨论
English
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
问问小炼
工具
链入页面
相关更改
特殊页面
页面信息
分享
微信扫码分享