卡厄思
梦
境
菜单
首页
回到首页
WIKI工具
全站样式
全站JS
修改导航栏
测试
沙盒
可视化管理器
战斗员管理器
卡牌管理器
伙伴管理器
装备管理器
词典管理器
图鉴
战斗员
伙伴
装备
怪物卡牌
中立卡牌
词典
小工具
配队模拟器
节奏榜生成器
搜索
链入页面
相关更改
特殊页面
页面信息
最近更改
登录
MediaWiki
查看“︁Common.js”︁的源代码
←
MediaWiki:Common.js
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。 如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此JavaScript页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */ /* 切换标签 */ (function() { 'use strict'; function initTabSwitcher() { var tabContainers = document.querySelectorAll('.resp-tabs'); tabContainers.forEach(function(container) { var tabButtons = container.querySelectorAll('.czn-list-style'); if (tabButtons.length === 0) return; // 检测模式 var tabContents = container.querySelectorAll('.resp-tab-content'); var portraitImages = document.querySelectorAll('.portrait-image'); // 初始化 tabButtons.forEach(function(button, index) { button.classList.toggle('active', index === 0); }); if (tabContents.length > 0) { tabContents.forEach(function(content, index) { content.style.display = index === 0 ? 'block' : 'none'; }); } if (portraitImages.length > 0) { portraitImages.forEach(function(image, index) { image.style.display = index === 0 ? 'block' : 'none'; }); } // 点击事件 tabButtons.forEach(function(button, index) { button.addEventListener('click', function(e) { e.preventDefault(); // 更新标签状态 tabButtons.forEach(function(btn, i) { btn.classList.toggle('active', i === index); }); // 传统模式切换 if (tabContents.length > 0) { tabContents.forEach(function(content, i) { content.style.display = i === index ? 'block' : 'none'; }); } // 立绘模式切换 if (portraitImages.length > 0) { portraitImages.forEach(function(image) { image.style.display = 'none'; }); var targetImage = document.querySelector('.portrait-image[data-index="' + index + '"]'); if (targetImage) { targetImage.style.display = 'block'; } } }); }); }); } // 初始化 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initTabSwitcher); } else { initTabSwitcher(); } })(); /* 战斗员筛选 */ $(function() { // 初始化筛选系统 function initFilterSystem() { console.log('开始初始化筛选系统'); // 为所有战斗员卡片添加数据属性 $('.战斗员卡片').each(function() { var $card = $(this); // 从卡片内容中提取信息 var name = $card.find('div:contains("战斗员图鉴_")').find('img').attr('src'); if (name) { name = name.match(/战斗员图鉴_(.+?)\.png/); name = name ? name[1] : ''; } // 获取稀有度 - 从class属性中提取 var rarityElement = $card.find('[class*="rarity-"]'); var rarity = ''; if (rarityElement.length > 0) { var classList = rarityElement.attr('class'); var match = classList.match(/rarity-(\d+)/); if (match) { rarity = match[1]; } } // 获取职业 - 从图片文件名中提取 var professionImg = $card.find('img[src*="icon_职业_"]'); var profession = ''; if (professionImg.length > 0) { var src = professionImg.attr('src'); var match = src.match(/icon_职业_(.+?)\.png/); if (match) { profession = match[1]; } } // 获取属性 - 从图片文件名中提取 var attributeImg = $card.find('img[src*="icon_属性_"]'); var attribute = ''; if (attributeImg.length > 0) { var src = attributeImg.attr('src'); var match = src.match(/icon_属性_(.+?)\.png/); if (match) { attribute = match[1]; } } // 设置数据属性 $card.attr({ 'data-name': name || '未知', 'data-rarity': rarity || '未知', 'data-profession': profession || '未知', 'data-attribute': attribute || '未知' }); console.log('卡片数据:', { name: name, rarity: rarity, profession: profession, attribute: attribute }); }); console.log('找到战斗员卡片数量:', $('.战斗员卡片').length); // 存储当前筛选状态 var activeFilters = {}; // 筛选按钮点击事件 $('.filter-button').off('click').on('click', function(e) { e.preventDefault(); var $button = $(this); var group = String($button.data('filter-group')); var value = String($button.data('filter-value')); console.log('点击筛选按钮:', { group: group, value: value }); // 切换按钮状态 if (group === '0' && value === '0') { // 查看全部按钮 $('.filter-button').removeClass('active'); $button.addClass('active'); activeFilters = {}; console.log('清空所有筛选'); } else { // 其他筛选按钮 $('.filter-button[data-filter-group="0"]').removeClass('active'); // 同组内只能选择一个 $('.filter-button[data-filter-group="' + group + '"]').removeClass('active'); if (activeFilters[group] === value) { // 如果点击已激活的按钮,则取消选择 delete activeFilters[group]; $button.removeClass('active'); console.log('取消筛选:', group); } else { // 激活新的筛选 $button.addClass('active'); activeFilters[group] = value; console.log('激活筛选:', { group: group, value: value }); } // 如果没有任何筛选项,激活"查看全部" if (Object.keys(activeFilters).length === 0) { $('.filter-button[data-filter-group="0"][data-filter-value="0"]').addClass('active'); } } console.log('当前激活的筛选:', activeFilters); // 应用筛选 applyFilters(); }); // 应用筛选函数 function applyFilters() { var visibleCount = 0; var hiddenCount = 0; $('.战斗员卡片').each(function() { var $card = $(this); var shouldShow = true; // 检查每个激活的筛选条件 for (var group in activeFilters) { var filterValue = activeFilters[group]; var cardValue = ''; // 根据组号获取对应的卡片属性 switch(group) { case '1': // 稀有度 cardValue = $card.attr('data-rarity'); break; case '2': // 职业 cardValue = $card.attr('data-profession'); break; case '3': // 属性 cardValue = $card.attr('data-attribute'); break; default: cardValue = $card.attr('data-filter-' + group); } console.log('比较:', { group: group, filterValue: filterValue, cardValue: cardValue, match: cardValue === filterValue }); if (cardValue !== filterValue) { shouldShow = false; break; } } // 显示或隐藏卡片 if (shouldShow) { $card.show(); visibleCount++; } else { $card.hide(); hiddenCount++; } }); console.log('筛选结果: 显示', visibleCount, '个,隐藏', hiddenCount, '个'); // 更新显示数量 updateCount(); } // 更新显示数量 function updateCount() { var visibleCount = $('.战斗员卡片:visible').length; var totalCount = $('.战斗员卡片').length; if ($('#filter-count').length === 0) { $('.filter-container').prepend('<div id="filter-count"></div>'); } $('#filter-count').text('显示 ' + visibleCount + ' / ' + totalCount + ' 个战斗员'); } // 初始化时激活"查看全部"按钮 $('.filter-button[data-filter-group="0"][data-filter-value="0"]').addClass('active'); updateCount(); } // 等待页面加载完成 var checkInterval = setInterval(function() { if ($('.战斗员卡片').length > 0 && $('.filter-button').length > 0) { clearInterval(checkInterval); initFilterSystem(); } }, 500); // 10秒后停止检查 setTimeout(function() { clearInterval(checkInterval); }, 10000); });; /* 卡牌 */ (function() { // 防止重复初始化 if (window.cardSystemInitialized) return; window.cardSystemInitialized = true; // 缓存DOM元素 var overlayCache = null; var containerCache = null; // 保存当前卡牌信息,用于返回 var currentCardInfo = null; // 创建遮罩层和容器(只创建一次) function createCardOverlay() { if (overlayCache && containerCache) { return { overlay: overlayCache, container: containerCache }; } // 创建遮罩 var overlay = document.createElement('div'); overlay.id = 'card-overlay'; overlay.style.cssText = 'display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.8); z-index: 9999; overflow-y: auto;'; // 创建容器 var container = document.createElement('div'); container.id = 'card-display-container'; // 修复:使用 relative 定位,避免左上角显示问题 container.style.cssText = 'position: relative; min-height: 100vh; padding: 40px 20px; display: flex; align-items: center; justify-content: center;'; overlay.appendChild(container); document.body.appendChild(overlay); // 点击遮罩关闭 overlay.addEventListener('click', function(e) { if (e.target === overlay) { closeCardDisplay(); } }); overlayCache = overlay; containerCache = container; return { overlay: overlay, container: container }; } // 创建关闭按钮 function createCloseButton() { var closeBtn = document.createElement('div'); closeBtn.style.cssText = 'position: fixed; top: 20px; right: 20px; width: 40px; height: 40px; background: rgba(255,255,255,0.1); border: 2px solid white; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; z-index: 10001; transition: all 0.3s;'; closeBtn.innerHTML = '<span style="color: white; font-size: 24px; font-weight: bold; line-height: 1;">×</span>'; closeBtn.onmouseover = function() { this.style.background = 'rgba(255,255,255,0.2)'; this.style.transform = 'scale(1.1)'; }; closeBtn.onmouseout = function() { this.style.background = 'rgba(255,255,255,0.1)'; this.style.transform = 'scale(1)'; }; closeBtn.onclick = function() { closeCardDisplay(); }; return closeBtn; } // 关闭卡牌展示 function closeCardDisplay() { var overlay = document.getElementById('card-overlay'); if (overlay) { overlay.style.display = 'none'; var container = overlay.querySelector('#card-display-container'); if (container) { container.innerHTML = ''; } } currentCardInfo = null; // 清空当前卡牌信息 } // 缓存API调用结果 var apiCache = {}; // 获取卡牌HTML(通过API调用模块) function fetchCardHTML(character, cardName, deckType, callback) { var cacheKey = character + '|' + cardName + '|' + (deckType || ''); // 检查缓存 if (apiCache[cacheKey]) { callback(apiCache[cacheKey]); return; } var api = new mw.Api(); var wikitext = '{{#invoke:卡牌|main|' + character + '|' + cardName + '|' + (deckType || '') + '}}'; api.parse(wikitext).done(function(html) { apiCache[cacheKey] = html; // 缓存结果 callback(html); }).fail(function() { callback('<div style="color: white;">加载失败</div>'); }); } // 放大显示卡牌 function showEnlargedCard(cardElement) { var elements = createCardOverlay(); var container = elements.container; var cardName = cardElement.dataset.cardName; var character = cardElement.dataset.character; var deckType = cardElement.dataset.deckType; var derivedCards = cardElement.dataset.derivedCards; // 保存当前卡牌信息 currentCardInfo = { element: cardElement, cardName: cardName, character: character, deckType: deckType, derivedCards: derivedCards }; // 重置容器样式 container.style.cssText = 'position: relative; min-height: 100vh; padding: 40px 20px; display: flex; align-items: center; justify-content: center;'; // 创建内容包装器 var contentWrapper = document.createElement('div'); contentWrapper.style.cssText = 'display: flex; align-items: center; gap: 20px; position: relative;'; // 创建主卡牌容器 var mainCardContainer = document.createElement('div'); mainCardContainer.style.cssText = 'position: relative; width: 336px; height: 460px; display: flex; align-items: center; justify-content: center;'; // 克隆并放大主卡牌 var enlargedCard = cardElement.cloneNode(true); // 修复放大卡牌的样式 var cardInner = document.createElement('div'); cardInner.style.cssText = 'transform: scale(2); position: relative;'; cardInner.appendChild(enlargedCard); // 确保卡牌正确显示 enlargedCard.style.width = '168px'; enlargedCard.style.height = '230px'; enlargedCard.style.cursor = 'default'; enlargedCard.style.position = 'relative'; enlargedCard.style.display = 'block'; enlargedCard.onclick = null; mainCardContainer.appendChild(cardInner); // 处理衍生卡牌 if (derivedCards && derivedCards.trim() !== '') { var derivedCardsList = derivedCards.split('、'); // 创建左侧容器 var leftContainer = document.createElement('div'); leftContainer.style.cssText = 'display: flex; flex-direction: column; gap: 15px; align-items: flex-end;'; if (derivedCardsList.length > 1) { // 多张衍生卡牌,添加查看所有按钮 var viewAllBtn = document.createElement('div'); viewAllBtn.style.cssText = 'padding: 10px 20px; background: linear-gradient(135deg, #4a90e2, #357abd); color: white; border-radius: 6px; cursor: pointer; white-space: nowrap; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); transition: transform 0.2s;'; viewAllBtn.textContent = '查看所有衍生卡牌'; viewAllBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; }; viewAllBtn.onmouseout = function() { this.style.transform = 'scale(1)'; }; viewAllBtn.onclick = function() { showAllDerivedCards(character, derivedCardsList); }; leftContainer.appendChild(viewAllBtn); } // 显示第一张衍生卡牌 var firstDerivedCard = document.createElement('div'); firstDerivedCard.id = 'derived-cards-display'; firstDerivedCard.style.cssText = 'display: flex; align-items: center;'; fetchCardHTML(character, derivedCardsList[0].trim(), '', function(html) { firstDerivedCard.innerHTML = html; var cards = firstDerivedCard.querySelectorAll('.game-card'); cards.forEach(function(card) { card.style.cursor = 'default'; card.onclick = null; }); }); leftContainer.appendChild(firstDerivedCard); contentWrapper.appendChild(leftContainer); } contentWrapper.appendChild(mainCardContainer); // 创建按钮容器(放在主卡牌下方) var buttonsContainer = document.createElement('div'); buttonsContainer.style.cssText = 'position: absolute; bottom: -60px; left: 50%; transform: translateX(-50%); display: flex; gap: 15px; z-index: 10; white-space: nowrap;'; // 预加载按钮,避免延迟 checkCardVariants(character, cardName, function(variants) { if (variants.lingguang) { var lingguangBtn = document.createElement('div'); lingguangBtn.style.cssText = 'padding: 10px 30px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); transition: transform 0.2s; white-space: nowrap; min-width: 120px; text-align: center;'; lingguangBtn.textContent = '灵光一闪'; lingguangBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; }; lingguangBtn.onmouseout = function() { this.style.transform = 'scale(1)'; }; lingguangBtn.onclick = function() { showVariantCards(character, cardName, '灵光一闪'); }; buttonsContainer.appendChild(lingguangBtn); } if (variants.shenguang) { var shenguangBtn = document.createElement('div'); shenguangBtn.style.cssText = 'padding: 10px 30px; background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); transition: transform 0.2s; white-space: nowrap; min-width: 120px; text-align: center;'; shenguangBtn.textContent = '神之一闪'; shenguangBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; }; shenguangBtn.onmouseout = function() { this.style.transform = 'scale(1)'; }; shenguangBtn.onclick = function() { showVariantCards(character, cardName, '神之一闪'); }; buttonsContainer.appendChild(shenguangBtn); } }); mainCardContainer.appendChild(buttonsContainer); container.innerHTML = ''; container.appendChild(contentWrapper); // 添加关闭按钮 container.appendChild(createCloseButton()); elements.overlay.style.display = 'block'; } // 显示所有衍生卡牌 function showAllDerivedCards(character, derivedCardsList) { var overlay = document.getElementById('card-overlay'); var container = document.getElementById('card-display-container'); // 清空当前内容 container.innerHTML = ''; container.style.cssText = 'position: relative; padding: 40px; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center;'; // 创建标题 var title = document.createElement('div'); title.style.cssText = 'color: white; font-size: 28px; font-weight: bold; margin-bottom: 30px; text-align: center;'; title.textContent = '衍生卡牌'; container.appendChild(title); // 创建卡牌容器 var cardsContainer = document.createElement('div'); cardsContainer.style.cssText = 'display: flex; flex-wrap: wrap; gap: 15px; justify-content: center; max-width: 1200px;'; // 加载所有衍生卡牌 var uniqueCards = [...new Set(derivedCardsList.map(function(name) { return name.trim(); }))]; var loadedCount = 0; uniqueCards.forEach(function(cardName) { fetchCardHTML(character, cardName, '', function(html) { var cardWrapper = document.createElement('div'); cardWrapper.innerHTML = html; var cards = cardWrapper.querySelectorAll('.game-card'); cards.forEach(function(card) { card.style.cursor = 'default'; card.onclick = null; cardsContainer.appendChild(card); }); loadedCount++; if (loadedCount === uniqueCards.length) { // 所有卡牌加载完成 } }); }); container.appendChild(cardsContainer); // 添加返回按钮(返回到放大的卡牌页面) var backBtn = document.createElement('div'); backBtn.style.cssText = 'position: fixed; top: 20px; left: 20px; padding: 10px 20px; background: linear-gradient(135deg, #4a90e2, #357abd); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); z-index: 10001;'; backBtn.textContent = '← 返回'; backBtn.onclick = function() { // 返回到放大的卡牌页面 if (currentCardInfo && currentCardInfo.element) { showEnlargedCard(currentCardInfo.element); } }; container.appendChild(backBtn); // 添加关闭按钮 container.appendChild(createCloseButton()); } // 检查卡牌变体(优化版) function checkCardVariants(character, cardName, callback) { var variants = { lingguang: false, shenguang: false }; var checkCount = 0; var totalChecks = 2; function checkComplete() { checkCount++; if (checkCount === totalChecks) { callback(variants); } } // 并行检查两种变体 fetchCardHTML(character, cardName, '灵光一闪', function(html) { if (html && !html.includes('找不到卡组')) { variants.lingguang = true; } checkComplete(); }); fetchCardHTML(character, cardName, '神之一闪', function(html) { if (html && !html.includes('找不到卡组')) { variants.shenguang = true; } checkComplete(); }); } // 显示变体卡牌 function showVariantCards(character, cardName, variantType) { var overlay = document.getElementById('card-overlay'); var container = document.getElementById('card-display-container'); // 重置容器样式 container.style.cssText = 'position: relative; padding: 40px; min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center;'; container.innerHTML = ''; // 创建标题 var title = document.createElement('div'); title.style.cssText = 'color: white; font-size: 28px; font-weight: bold; margin-bottom: 30px; text-align: center; background: linear-gradient(135deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;'; title.textContent = cardName + ' - ' + variantType; container.appendChild(title); // 创建卡牌容器(增大宽度以容纳5张卡牌) var cardsContainer = document.createElement('div'); cardsContainer.style.cssText = 'display: flex; flex-wrap: nowrap; gap: 15px; justify-content: center; max-width: 1200px; overflow-x: auto; padding: 20px;'; // 加载变体卡牌 fetchCardHTML(character, cardName, variantType, function(html) { cardsContainer.innerHTML = html; // 移除所有卡牌的点击事件 var cards = cardsContainer.querySelectorAll('.game-card'); cards.forEach(function(card) { card.style.cursor = 'default'; card.onclick = null; card.style.flexShrink = '0'; // 防止卡牌缩小 }); }); container.appendChild(cardsContainer); // 添加返回按钮(返回到放大的卡牌页面) var backBtn = document.createElement('div'); backBtn.style.cssText = 'position: fixed; top: 20px; left: 20px; padding: 10px 20px; background: linear-gradient(135deg, #4a90e2, #357abd); color: white; border-radius: 6px; cursor: pointer; font-weight: bold; box-shadow: 0 2px 8px rgba(0,0,0,0.3); z-index: 10001; transition: transform 0.2s;'; backBtn.textContent = '← 返回'; backBtn.onmouseover = function() { this.style.transform = 'scale(1.05)'; }; backBtn.onmouseout = function() { this.style.transform = 'scale(1)'; }; backBtn.onclick = function() { // 返回到放大的卡牌页面 if (currentCardInfo && currentCardInfo.element) { showEnlargedCard(currentCardInfo.element); } }; container.appendChild(backBtn); // 添加关闭按钮 container.appendChild(createCloseButton()); } // 初始化卡牌点击事件 function initCardClickEvents() { // 使用事件委托 document.addEventListener('click', function(e) { var card = e.target.closest('.game-card'); if (card && !card.closest('#card-overlay')) { e.preventDefault(); e.stopPropagation(); showEnlargedCard(card); } }); } // 页面加载完成后初始化 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', function() { initCardClickEvents(); }); } else { initCardClickEvents(); } })();
返回
MediaWiki:Common.js
。