屏蔽洛谷题解页面并删除相关链接
// ==UserScript==
// @name Solution-Helper
// @namespace http://tampermonkey.net/
// @version 1.0
// @description 屏蔽洛谷题解页面并删除相关链接
// @author Gemini
// @match https://www.luogu.com.cn/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// 根据浏览器语言设置,选择合适的提示文本
function getBlockMessage() {
const lang = navigator.language.toLowerCase();
if (lang.startsWith('zh')) {
return '此页面疑似为题解,我们已为您屏蔽,如需打开,请在Tampermonkey中关闭Solution-Helper脚本。';
} else {
return 'This page appears to be a solution. We have blocked it for you. To view it, please disable the Solution-Helper script in Tampermonkey.';
}
}
// 检查当前 URL 是否是题解页面
const isSolutionPage = window.location.href.startsWith('https://www.luogu.com.cn/problem/solution/');
// 如果是题解页面,则执行屏蔽操作
if (isSolutionPage) {
// 清空页面所有内容
document.documentElement.innerHTML = '';
// 创建并插入提示信息
const message = getBlockMessage();
const style = `
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
font-family: sans-serif;
background-color: #f0f2f5;
text-align: center;
}
.block-message {
padding: 2em;
background-color: white;
border-radius: 8px;
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
color: #333;
font-size: 1.5em;
max-width: 80%;
}
`;
document.head.innerHTML = `<style>${style}</style>`;
document.body.innerHTML = `<div class="block-message">${message}</div>`;
return; // 脚本停止执行,不再进行后续操作
}
// 监听页面变化,动态删除“查看题解”链接
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === 'childList') {
// 查找并删除所有指向题解的 a 标签
document.querySelectorAll('a[href*="/problem/solution/"]').forEach(link => {
link.remove();
});
}
});
});
// 配置观察器,观察整个 body 元素及其子元素的变动
const observerConfig = {
childList: true,
subtree: true
};
observer.observe(document.body, observerConfig);
// 页面加载完成后立即执行一次删除操作
window.addEventListener('load', () => {
document.querySelectorAll('a[href*="/problem/solution/"]').forEach(link => {
link.remove();
});
});
})();