本帖最后由 sosme2012 于 2026-1-27 17:41 编辑
主要功能:快捷键ctrl+y进入纯净阅读模式
chrome浏览器上测试完美如下图,其他浏览器没测试
将下面源码直接在油猴面板添加即可,进入和退出快捷键均为ctrl+y
[Java] 纯文本查看 复制代码 // ==UserScript==
// @name 极简全屏阅读器
// @description 极简simple read、纯净文本、摸鱼用
// @match *://*/*
// ==/UserScript==
(function() {
'use strict';
let readerOverlay = null;
// 核心样式:强制覆盖一切
const style = `
#gm-reader-overlay {
position: fixed !important;
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
background-color: #ffffff !important;
z-index: 2147483647 !important;
overflow-y: auto !important;
display: flex !important;
justify-content: center !important;
padding: 0 !important;
margin: 0 !important;
}
#gm-reader-wrapper {
width: 90% !important;
max-width: 700px !important; /* 针对窄屏优化的黄金宽度 */
padding: 60px 20px !important;
background: #ffffff !important;
box-sizing: border-box !important;
text-align: left !important;
}
/* 仅显示纯文本样式 */
.gm-reader-title {
font-size: 2em !important;
font-weight: bold !important;
margin-bottom: 1em !important;
line-height: 1.3 !important;
color: #1a1a1a !important;
}
.gm-reader-p {
font-size: 18px !important;
line-height: 1.8 !important;
color: #333 !important;
margin-bottom: 1.5em !important;
font-family: -apple-system, "Noto Sans SC", "Microsoft Yahei", serif !important;
word-break: break-word !important;
}
`;
GM_addStyle(style);
function toggleReadingMode() {
if (readerOverlay) {
// 退出模式
readerOverlay.remove();
readerOverlay = null;
document.body.style.overflow = ''; // 恢复滚动
return;
}
// 提取逻辑:寻找正文
const main = document.querySelector('article') ||
document.querySelector('main') ||
document.querySelector('.content') ||
document.body;
// 提取标题和所有段落文本
const title = document.title.split('-')[0].split('_')[0]; // 尝试获取纯净标题
const paragraphs = main.querySelectorAll('p, h1, h2, h3, h4, li');
let cleanHTML = `<div class="gm-reader-title">${title}</div>`;
paragraphs.forEach(el => {
const text = el.innerText.trim();
if (text.length > 10) { // 过滤掉太短的干扰项(如导航文字)
cleanHTML += `<div class="gm-reader-p">${text}</div>`;
}
});
// 如果没抓取到内容,降级处理
if (paragraphs.length < 3) {
cleanHTML += `<div class="gm-reader-p">未能提取到长段落,可能是异步加载或结构特殊。</div>`;
}
// 创建全屏图层
readerOverlay = document.createElement('div');
readerOverlay.id = 'gm-reader-overlay';
const wrapper = document.createElement('div');
wrapper.id = 'gm-reader-wrapper';
wrapper.innerHTML = cleanHTML;
readerOverlay.appendChild(wrapper);
document.documentElement.appendChild(readerOverlay);
// 锁定原网页滚动
document.body.style.overflow = 'hidden';
}
// 快捷键监听
window.addEventListener('keydown', (e) => {
if (e.ctrlKey && e.key.toLowerCase() === 'y') {
e.preventDefault();
toggleReadingMode();
}
});
})();
|