User:弃权者/Common.js.bak:修订间差异
来自OGAS数据中枢
更多操作
无编辑摘要 |
无编辑摘要 标签:已被回退 |
||
| 第83行: | 第83行: | ||
}); | }); | ||
}); | }); | ||
//倒计时的逻辑写在下面 | |||
(function () { | |||
let t = null; | |||
function u() { | |||
const n = new Date(); | |||
document.querySelectorAll(".countdown-timer").forEach((el) => { | |||
const s = el.getAttribute("data-target"); | |||
let g = s === "today-end" ? new Date(n.getFullYear(), n.getMonth(), n.getDate(), 23, 59, 59) : new Date(s); | |||
const d = g - n; | |||
if (d <= 0) { | |||
el.innerHTML = "Ended"; | |||
return; | |||
} | |||
const h = Math.floor(d / 36e5), | |||
m = Math.floor((d % 36e5) / 6e4), | |||
c = Math.floor((d % 6e4) / 1e3); | |||
el.innerHTML = [h, m, c].map((v) => (v < 10 ? "0" + v : v)).join(":"); | |||
}); | |||
} | |||
function start() { | |||
if (!t) { | |||
u(); | |||
t = setInterval(u, 1000); | |||
} | |||
} | |||
function stop() { | |||
clearInterval(t); | |||
t = null; | |||
} | |||
document.addEventListener("visibilitychange", () => { | |||
if (document.hidden) { | |||
stop(); | |||
} else { | |||
start(); | |||
} | |||
}); | |||
start(); | |||
})(); | |||
2026年5月3日 (日) 14:51的版本
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
// 使用 mw.hook 监听内容变化,兼容 Citizen 的无刷新加载
mw.hook('wikipage.content').add(function($content) {
//强制唤醒折叠元素 (解决导航栏卡住、全展开问题)
mw.loader.using('jquery.makeCollapsible').then(function () {
// 让页面里所有的 .mw-collapsible 重新活过来
$content.find('.mw-collapsible').makeCollapsible();
});
// 2. 萌百风格 Tabs 自动转换脚本
// ==========================================
// 注意这里把原来的 $('.Tabs') 改成了 $content.find('.Tabs')
$content.find('.Tabs').each(function() {
var $tabsContainer = $(this);
// 1. 检查是否已经初始化过
if ($tabsContainer.hasClass('tabs-initialized')) return;
// 2. 提取所有的标签和内容
var $tabItems = $tabsContainer.find('> .Tab');
if ($tabItems.length === 0) return;
// 3. 创建标准的标签栏和内容容器
var $labelWrapper = $('<div class="TabLabel"></div>');
var $contentWrapper = $('<div class="TabContent"></div>');
$tabItems.each(function(index) {
var $item = $(this);
var $label = $item.find('> .TabLabelText');
var $content = $item.find('> .TabContentText');
// 给第一个设为选中
if (index === 0) {
$label.addClass('selected');
$content.addClass('selected');
}
// 绑定点击事件
$label.on('click', function() {
$labelWrapper.find('.TabLabelText').removeClass('selected');
$contentWrapper.find('.TabContentText').removeClass('selected');
$(this).addClass('selected');
$content.addClass('selected');
});
$labelWrapper.append($label);
$contentWrapper.append($content);
});
// 清空原有的“散装”内容,插入标准结构
$tabsContainer.empty().append($labelWrapper).append($contentWrapper).addClass('tabs-initialized');
});
});
/* 导航胶囊互斥逻辑:确保同一时间只有一个面板展开 */
mw.hook('wikipage.content').add(function($content) {
// 监听所有带有 .nav-pill-btn 类的点击
$content.find('.nav-pill-btn').on('click', function() {
var $clicked = $(this);
// 使用正则提取编号 (例如 mw-customtoggle-game1 -> 1)
var match = $clicked.attr('class').match(/mw-customtoggle-game(\d+)/);
if (!match) return;
var currentId = match[1];
var $myContent = $('#mw-customcollapsible-game' + currentId); // 修正:此处使用 + 拼接
// 如果我们正准备打开这个面板 (它目前带有折叠类 mw-collapsed)
if ($myContent.hasClass('mw-collapsed')) {
// 找到所有其他的导航内容面板
$('.nav-pill-content').not($myContent).each(function() {
var $other = $(this);
// 如果发现某个面板不是折叠状态,则模拟点击对应的按钮让其收回
if (!$other.hasClass('mw-collapsed')) {
var otherNum = $other.attr('id').replace('mw-customcollapsible-game', '');
$('.mw-customtoggle-game' + otherNum).click();
}
});
}
});
});
//倒计时的逻辑写在下面
(function () {
let t = null;
function u() {
const n = new Date();
document.querySelectorAll(".countdown-timer").forEach((el) => {
const s = el.getAttribute("data-target");
let g = s === "today-end" ? new Date(n.getFullYear(), n.getMonth(), n.getDate(), 23, 59, 59) : new Date(s);
const d = g - n;
if (d <= 0) {
el.innerHTML = "Ended";
return;
}
const h = Math.floor(d / 36e5),
m = Math.floor((d % 36e5) / 6e4),
c = Math.floor((d % 6e4) / 1e3);
el.innerHTML = [h, m, c].map((v) => (v < 10 ? "0" + v : v)).join(":");
});
}
function start() {
if (!t) {
u();
t = setInterval(u, 1000);
}
}
function stop() {
clearInterval(t);
t = null;
}
document.addEventListener("visibilitychange", () => {
if (document.hidden) {
stop();
} else {
start();
}
});
start();
})();