首页
最近更改
MediaWiki帮助
中文社区
模组
人物
团体
群聊
历史
外网社区
模组
发帖交流
论坛
聊天
博客
快捷访问
分类
文件列表
上传文件
用户列表
用户通知
礼物列表
随机页面
聊天中的在线用户
系统消息
讨论
查看源代码
查看历史
刷新
创建账号
登录
查看“︁MediaWiki:Common.js”︁的源代码
来自Age Of History 2 Chinese Wiki
←
Common.js
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* 轮播图功能 */ mw.hook('wikipage.content').add(function($content) { // 查找页面中所有轮播图 $content.find('.mw-carousel').each(function() { const $carousel = $(this); const $items = $carousel.find('.carousel-item'); const $indicators = $carousel.find('.carousel-indicators'); const $prevBtn = $carousel.find('.carousel-prev'); const $nextBtn = $carousel.find('.carousel-next'); let currentIndex = 0; const slideCount = $items.length; if (slideCount === 0) return; // 创建指示器 for (let i = 0; i < slideCount; i++) { const $indicator = $('<div class="indicator"></div>'); if (i === 0) $indicator.addClass('active'); $indicator.on('click', function() { goToSlide(i); }); $indicators.append($indicator); } // 初始化第一张幻灯片 $items.eq(0).addClass('active'); // 给每个幻灯片添加点击事件 $items.each(function() { const $item = $(this); const link = $item.data('link'); if (link && link.length > 0) { $item.css('cursor', 'pointer').on('click', function() { window.location.href = link; }); } }); // 切换到指定幻灯片 function goToSlide(index) { $items.removeClass('active'); $indicators.find('.indicator').removeClass('active'); $items.eq(index).addClass('active'); $indicators.find('.indicator').eq(index).addClass('active'); currentIndex = index; } // 上一张 function prevSlide() { const newIndex = (currentIndex - 1 + slideCount) % slideCount; goToSlide(newIndex); } // 下一张 function nextSlide() { const newIndex = (currentIndex + 1) % slideCount; goToSlide(newIndex); } // 绑定按钮事件 $prevBtn.on('click', function(e) { e.preventDefault(); e.stopPropagation(); prevSlide(); }); $nextBtn.on('click', function(e) { e.preventDefault(); e.stopPropagation(); nextSlide(); }); // 自动播放 let autoplayInterval = setInterval(nextSlide, 5000); $carousel.on('mouseenter', function() { clearInterval(autoplayInterval); }).on('mouseleave', function() { autoplayInterval = setInterval(nextSlide, 5000); }); // 触摸滑动支持 let touchStartX = 0; let touchEndX = 0; $carousel.on('touchstart', function(e) { touchStartX = e.originalEvent.touches[0].clientX; }); $carousel.on('touchend', function(e) { touchEndX = e.originalEvent.changedTouches[0].clientX; // 判断滑动方向 if (touchEndX < touchStartX - 50) { nextSlide(); // 左滑,下一张 } else if (touchEndX > touchStartX + 50) { prevSlide(); // 右滑,上一张 } }); }); }); // Collapsible blocks functionality $(document).ready(function() { // Initialize collapsible blocks $('.collapsible-header').click(function() { $(this).next('.collapsible-content').slideToggle(); $(this).toggleClass('active'); }); // Initially hide collapsible content $('.collapsible-content').hide(); }); /* Common.js - Database New主题JavaScript增强 */ $(function() { // 创建CRT效果容器 function createCRTEffects() { if ($('.crt-effects').length === 0) { var crtContainer = $('<div>', { 'class': 'crt-effects', html: [ $('<div>', {'class': 'scan-line-effect'}), $('<div>', {'class': 'scan-animation'}).append( $('<div>', {'class': 'fast-scan'}) ), $('<div>', {'class': 'radial-glow'}) ] }); $('body').append(crtContainer); } } // 初始化CRT效果 createCRTEffects(); // 橙幕切换功能 if (typeof window.orangemu_toggle_init === 'undefined') { window.orangemu_toggle_init = true; // 为橙幕添加点击切换功能 $(document).on('click', '.orangemu', function(e) { e.stopPropagation(); $(this).toggleClass('orangemu_toggle_on'); }); } // 修复动画问题 function fixAnimations() { // 延迟应用动画,防止页面加载时的闪烁 setTimeout(function() { $('#mw-content-text > *').each(function(index) { $(this).css({ 'animation': 'fadeIn 0.5s ease-out forwards', 'animation-delay': (index * 0.1) + 's', 'opacity': '0' }); }); }, 100); } // 应用动画修复 $(document).ready(function() { fixAnimations(); }); // 监听新内容加载(如AJAX) mw.hook('wikipage.content').add(function($content) { if ($content.attr('id') === 'mw-content-text') { fixAnimations(); } }); // 添加复古终端效果的打字动画 function typeWriter(element, text, speed) { var i = 0; element.empty(); function type() { if (i < text.length) { element.append(text.charAt(i)); i++; setTimeout(type, speed); } } type(); } // 为特定元素应用打字效果 $('.terminal-text').each(function() { var text = $(this).text(); typeWriter($(this), text, 50); }); // 添加闪烁光标效果 function createBlinkingCursor() { var cursor = $('<span>', { 'class': 'terminal-cursor', text: '▋' }); setInterval(function() { cursor.toggle(); }, 500); return cursor; } // 为终端元素添加光标 $('.terminal').each(function() { $(this).append(createBlinkingCursor()); }); // 模拟CRT屏幕抖动效果 function screenGlitch() { var container = $('#content'); container.css('transform', 'translate(' + (Math.random() * 2 - 1) + 'px, ' + (Math.random() * 2 - 1) + 'px)'); setTimeout(function() { container.css('transform', 'translate(0, 0)'); }, 50); } // 随机触发屏幕抖动 setInterval(function() { if (Math.random() < 0.005) { // 0.5%的概率 screenGlitch(); } }, 1000); // 为页面添加启动动画 function bootSequence() { $('body').addClass('booting'); setTimeout(function() { $('body').removeClass('booting').addClass('booted'); }, 500); } // 页面加载时执行启动序列 bootSequence(); }); // 辅助CSS类 $(function() { // 动态添加一些必要的CSS var customStyles = ` .terminal-cursor { animation: blink 1s infinite; } @keyframes blink { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } } .booting #content { opacity: 0; transform: scale(0.95); transition: all 0.5s ease-out; } .booted #content { opacity: 1; transform: scale(1); } .terminal { font-family: var(--mono-font); background-color: rgb(var(--black-monochrome)); color: rgb(var(--bright-accent)); padding: 1rem; border: 2px solid rgb(var(--bright-accent)); box-shadow: 0 0 10px rgba(var(--bright-accent), 0.3); } /* 修复动画闪烁问题 */ #mw-content-text > * { visibility: visible; } .mw-parser-output > *.animated { animation: none !important; } `; $('<style>').text(customStyles).appendTo('head'); }); // 修复变色龙皮肤的Bootstrap组件 $(function() { function fixBootstrapComponents() { // 修复导航栏 $('.navbar').css({ 'background-color': 'rgb(10, 10, 10)', 'border-bottom': '1px solid rgb(229, 140, 36)' }); // 修复下拉菜单 $('.dropdown-menu').css({ 'background-color': 'rgb(10, 10, 10)', 'border': '1px solid rgb(229, 140, 36)' }); // 修复按钮 $('.btn').css({ 'background-color': 'rgb(72, 69, 60)', 'border': '1px solid rgb(229, 140, 36)', 'color': 'rgb(229, 140, 36)' }); // 修复表单控件 $('.form-control').css({ 'background-color': 'rgb(10, 10, 10)', 'border': '1px solid rgb(229, 140, 36)', 'color': 'rgb(229, 140, 36)' }); } // 应用样式修复 fixBootstrapComponents(); // 监听DOM变化 var observer = new MutationObserver(function(mutations) { fixBootstrapComponents(); }); observer.observe(document.body, { childList: true, subtree: true }); }); // 顶栏头像显示 // 增强的头像显示 $(document).ready(function() { var username = mw.config.get('wgUserName'); if (username) { // 获取用户ID,是生成头像URL的关键 $.get(mw.util.wikiScript('api'), { action: 'query', list: 'users', ususers: username, format: 'json' }).done(function(data) { if (data && data.query && data.query.users && data.query.users[0]) { var userId = data.query.users[0].userid; // 尝试几种可能的头像路径格式 var possiblePaths = [ '/images/avatars/' + mw.config.get('wgDBname') + '_' + userId + '_s.jpg', '/images/avatars/' + mw.config.get('wgDBname') + '_' + userId + '_s.png', '/images/avatars/' + mw.config.get('wgDBname') + '_' + userId + '_s.gif', '/extensions/SocialProfile/avatars/' + mw.config.get('wgDBname') + '_' + userId + '_s.jpg', '/extensions/SocialProfile/avatars/' + mw.config.get('wgDBname') + '_' + userId + '_s.png', '/extensions/SocialProfile/avatars/' + mw.config.get('wgDBname') + '_' + userId + '_s.gif' ]; // 检查哪个路径可用 function checkPath(index) { if (index >= possiblePaths.length) { // 所有路径都不可用,使用默认头像 applyAvatarCSS('/extensions/SocialProfile/images/default_s.gif'); return; } var img = new Image(); img.onload = function() { // 找到可用的路径 applyAvatarCSS(possiblePaths[index]); }; img.onerror = function() { // 尝试下一个路径 checkPath(index + 1); }; img.src = mw.config.get('wgScriptPath') + possiblePaths[index]; } checkPath(0); } }); } function applyAvatarCSS(avatarUrl) { // 应用CSS规则 $('<style>').text( '.navbar-userloggedin::before, ' + '#personal-inner::before, ' + '#p-personal .vector-menu-content-list > li:first-child > a::before, ' + '.navbar-personaltools > li:first-child > a::before {' + ' background-image: url("' + avatarUrl + '") !important;' + '}' ).appendTo('head'); } }); /* Windows XP风格的MediaWiki JavaScript增强 */ // 等待文档加载完成 $(document).ready(function() { // 添加扫描线效果 // 添加XP窗口控制按钮(仅视觉效果) addWindowControls(); // 添加系统时钟 addSystemClock(); // 添加开始菜单功能 setupStartMenu(); // 添加窗口拖动功能 makeWindowsDraggable(); // 右下角工具提示 addSystemTrayIcon(); }); // 添加XP窗口控制按钮 function addWindowControls() { // 为内容区域添加窗口控制按钮的点击效果 $(document).on('click', '.lightblock::after, .darkblock::after, h1::after, h2::after, h3::after, h4::after, h5::after, h6::after, #firstHeading::after, .section-title::after, .notaninfobox > .infobox-title::after, .infobox th::after, .error-dialog::after, #toc::after, .toc::after, .navbox-title::after, table.navbox th::after, .mw-carousel::after', function(e) { e.preventDefault(); // 定位到被点击的元素 var $clickedElement = $(this); var $parentElement = $clickedElement.parent(); // 添加关闭动画效果 $parentElement.css({ 'transition': 'all 0.3s ease', 'opacity': '0', 'transform': 'scale(0.9)' }); // 半秒后恢复元素 setTimeout(function() { $parentElement.css({ 'opacity': '1', 'transform': 'scale(1)' }); }, 500); }); // 为最小化按钮添加点击效果 $(document).on('click', '.min-button, h1::before, h2::before, h3::before, h4::before, h5::before, h6::before, #firstHeading::before', function(e) { e.preventDefault(); // 定位到被点击的元素 var $clickedElement = $(this); var $parentElement = $clickedElement.parent(); // 添加最小化动画效果 $parentElement.css({ 'transition': 'all 0.3s ease', 'opacity': '0.5', 'transform': 'translateY(50px) scale(0.9)' }); // 在任务栏添加最小化窗口图标 var windowTitle = $parentElement.find('h1, h2, h3, h4, h5, h6').first().text() || 'Window'; if (windowTitle.length > 20) windowTitle = windowTitle.substring(0, 20) + '...'; var $minimizedWindow = $('<div class="minimized-window">' + windowTitle + '</div>'); $('body').append($minimizedWindow); // 点击任务栏图标恢复窗口 $minimizedWindow.click(function() { $parentElement.css({ 'opacity': '1', 'transform': 'translateY(0) scale(1)' }); $(this).remove(); }); }); // 为最大化按钮添加点击效果 $(document).on('click', '.max-button, h1 span::after, h2 span::after, h3 span::after, h4 span::after, h5 span::after, h6 span::after, #firstHeading span::after', function(e) { e.preventDefault(); // 定位到被点击的元素 var $clickedElement = $(this); var $parentElement = $clickedElement.parent(); // 切换最大化状态 if (!$parentElement.data('maximized')) { // 保存原始尺寸和位置 $parentElement.data('original-width', $parentElement.width()); $parentElement.data('original-height', $parentElement.height()); $parentElement.data('original-position', $parentElement.css('position')); $parentElement.data('original-top', $parentElement.css('top')); $parentElement.data('original-left', $parentElement.css('left')); $parentElement.data('original-right', $parentElement.css('right')); $parentElement.data('original-bottom', $parentElement.css('bottom')); $parentElement.data('original-z-index', $parentElement.css('z-index')); // 最大化 $parentElement.css({ 'transition': 'all 0.3s ease', 'position': 'fixed', 'top': '0', 'left': '0', 'right': '0', 'bottom': '0', 'width': '100%', 'height': '100%', 'z-index': '9999' }); $parentElement.data('maximized', true); $clickedElement.text('❐'); } else { // 恢复原始尺寸和位置 $parentElement.css({ 'transition': 'all 0.3s ease', 'position': $parentElement.data('original-position'), 'top': $parentElement.data('original-top'), 'left': $parentElement.data('original-left'), 'right': $parentElement.data('original-right'), 'bottom': $parentElement.data('original-bottom'), 'width': $parentElement.data('original-width'), 'height': $parentElement.data('original-height'), 'z-index': $parentElement.data('original-z-index') }); $parentElement.data('maximized', false); $clickedElement.text('□'); } }); } // 添加系统时钟 function addSystemClock() { // 创建时钟元素 var $clock = $('<div class="taskbar-clock"></div>'); $('body').append($clock); // 更新时钟函数 function updateClock() { var now = new Date(); var hours = now.getHours(); var minutes = now.getMinutes(); // 格式化时间 if (minutes < 10) minutes = '0' + minutes; // 设置时钟显示 $clock.text(hours + ':' + minutes); } // 初始化时钟 updateClock(); // 每分钟更新一次时钟 setInterval(updateClock, 60000); } // 添加开始菜单 function setupStartMenu() { // 创建开始菜单元素 var $startButton = $('body::after'); var $startMenu = $('<div id="xp-start-menu"></div>').css({ 'position': 'fixed', 'left': '0', 'bottom': '30px', 'width': '200px', 'background-color': 'white', 'border': '2px solid #0054e3', 'border-bottom': 'none', 'box-shadow': '2px -2px 5px rgba(0, 0, 0, 0.3)', 'z-index': '10000', 'display': 'none' }); // 添加菜单顶部 var $menuTop = $('<div class="start-menu-top"></div>').css({ 'height': '60px', 'background': 'linear-gradient(to bottom, #235ddc, #225ada 50%, #214fbb)', 'color': 'white', 'padding': '10px', 'font-weight': 'bold', 'display': 'flex', 'align-items': 'center' }); $menuTop.html('<span style="font-size: 16px;">User Name</span>'); $startMenu.append($menuTop); // 添加菜单项 var $menuItems = $('<div class="start-menu-items"></div>').css({ 'background-color': 'white', 'padding': '5px 0' }); // 定义菜单项 var menuItemsData = [ { icon: '📄', text: '我的文档', link: '#' }, { icon: '🖼️', text: '我的图片', link: '#' }, { icon: '🎵', text: '我的音乐', link: '#' }, { icon: '⚙️', text: '控制面板', link: '#' }, { icon: '🔍', text: '搜索', link: '/wiki/Special:Search' }, { icon: '❓', text: '帮助和支持', link: '/wiki/Help:目录' }, { icon: '🚪', text: '注销', link: '/wiki/Special:UserLogout' } ]; // 添加菜单项 $.each(menuItemsData, function(index, item) { var $menuItem = $('<div class="start-menu-item"></div>').css({ 'padding': '5px 10px', 'display': 'flex', 'align-items': 'center', 'cursor': 'pointer' }); $menuItem.html('<span style="margin-right: 10px; font-size: 16px;">' + item.icon + '</span>' + '<span>' + item.text + '</span>'); // 添加悬停效果 $menuItem.hover( function() { $(this).css('background-color', '#e0ecff'); }, function() { $(this).css('background-color', 'transparent'); } ); // 添加链接功能 $menuItem.click(function() { window.location.href = item.link; }); $menuItems.append($menuItem); }); $startMenu.append($menuItems); // 添加开始菜单到body $('body').append($startMenu); // 为开始按钮添加点击事件 $(document).on('click', 'body::after', function(e) { $startMenu.toggle(); }); // 点击其他区域关闭开始菜单 $(document).click(function(e) { if (!$(e.target).is('body::after') && !$(e.target).closest('#xp-start-menu').length) { $startMenu.hide(); } }); } // 使窗口可拖动 function makeWindowsDraggable() { // 让所有具有标题栏的元素可拖动 $('.main-page-banner, .announcement-container, .recent-pages-container .page-section, .featured-content-container .feature-item, .tools-container .tool-item, .news-container, .mw-carousel, .infobox, .notaninfobox, #toc, .toc, .navbox, .modulebox, .community-updates, .logoblock, .error-dialog, .lightblock, .darkblock').each(function() { var $window = $(this); var $header = $window.find('.section-title, .notaninfobox > .infobox-title, .infobox th, h1, h2, h3, h4, h5, h6, #firstHeading, .navbox-title, table.navbox th').first(); if ($header.length) { // 设置窗口的基本样式 $window.css({ 'position': 'relative' }); // 让标题栏可拖动 $header.css({ 'cursor': 'move' }).on('mousedown', function(e) { // 只有当没有点击窗口控制按钮时才允许拖动 if (!$(e.target).hasClass('min-button') && !$(e.target).hasClass('max-button') && !$(e.target).is('h1::after') && !$(e.target).is('h2::after') && !$(e.target).is('h3::after') && !$(e.target).is('h4::after') && !$(e.target).is('h5::after') && !$(e.target).is('h6::after') && !$(e.target).is('#firstHeading::after') && !$(e.target).is('.section-title::after') && !$(e.target).is('.notaninfobox > .infobox-title::after') && !$(e.target).is('.infobox th::after') && !$(e.target).is('.error-dialog::after') && !$(e.target).is('#toc::after') && !$(e.target).is('.toc::after') && !$(e.target).is('.navbox-title::after') && !$(e.target).is('table.navbox th::after') && !$(e.target).is('.mw-carousel::after')) { var startX = e.pageX; var startY = e.pageY; var startTop = parseInt($window.css('top')) || 0; var startLeft = parseInt($window.css('left')) || 0; var windowWidth = $window.outerWidth(); var windowHeight = $window.outerHeight(); // 确保窗口在可视区域内 var viewportWidth = $(window).width(); var viewportHeight = $(window).height(); // 设置窗口为绝对定位,这样可以移动 $window.css({ 'position': 'absolute', 'z-index': '1000' }); $(document).on('mousemove', function(e) { var newLeft = startLeft + (e.pageX - startX); var newTop = startTop + (e.pageY - startY); // 限制窗口在可视区域内 newLeft = Math.max(0, Math.min(newLeft, viewportWidth - windowWidth)); newTop = Math.max(0, Math.min(newTop, viewportHeight - windowHeight)); $window.css({ 'top': newTop + 'px', 'left': newLeft + 'px' }); }); $(document).on('mouseup', function() { $(document).off('mousemove mouseup'); }); e.preventDefault(); } }); } }); } // 添加系统托盘图标 function addSystemTrayIcon() { // 创建系统托盘图标 var $trayIcon = $('<div class="system-tray-icon"></div>').css({ 'position': 'fixed', 'right': '30px', 'bottom': '5px', 'width': '16px', 'height': '16px', 'background-image': 'url("data:image/svg+xml,%3Csvg xmlns=\'http://www.w3.org/2000/svg\' viewBox=\'0 0 16 16\'%3E%3Ccircle cx=\'8\' cy=\'8\' r=\'7\' fill=\'%23ffffff\'/%3E%3Cpath d=\'M8 3v5h3\' stroke=\'%23000000\' stroke-width=\'2\' fill=\'none\'/%3E%3C/svg%3E")', 'background-repeat': 'no-repeat', 'background-size': 'contain', 'cursor': 'pointer', 'z-index': '10000' }); // 添加到body $('body').append($trayIcon); // 添加工具提示 var $tooltip = $('<div class="system-tray-tooltip"></div>').css({ 'position': 'fixed', 'right': '20px', 'bottom': '35px', 'padding': '5px 10px', 'background-color': '#ffffcc', 'border': '1px solid #999', 'font-size': '12px', 'display': 'none', 'z-index': '10001', 'box-shadow': '2px 2px 5px rgba(0, 0, 0, 0.2)' }); $tooltip.text('当前时间: ' + new Date().toLocaleTimeString()); $('body').append($tooltip); // 鼠标悬停显示工具提示 $trayIcon.hover( function() { $tooltip.show(); }, function() { $tooltip.hide(); } ); // 定时更新工具提示内容 setInterval(function() { $tooltip.text('当前时间: ' + new Date().toLocaleTimeString()); }, 1000); }
返回
Common.js
。
工具
链入页面
相关更改
特殊页面
页面信息
Cargo数据