// ==UserScript== // @name 简洁版阮一峰周报 // @namespace https://github.com/AliubYiero/TamperMonkeyScripts // @version 1.1.2 // @description 显示简洁版阮一峰周报, 点击标题可以展开内容 // @author Yiero // @license GPL-3 // @match https://www.ruanyifeng.com/blog/* // @require https://scriptcat.org/lib/513/2.0.0/ElementGetter.js // @grant GM_addStyle // @grant GM_getValue // ==/UserScript== /* ==UserConfig== 配置项: imgHeight: title: 限制帖子内部图片高度 (单位px) (百分比缩放, 默认0表示auto) description: 限制图片大小, 单位像素px (默认0表示auto) type: number default: 0 defaultDisplayMode: title: 帖子默认显示状态 description: 帖子默认显示状态 ( 'hide' 默认隐藏, 'show' 默认显示 ) type: select default: 'hide' values: [ 'hide', 'show' ] ==/UserConfig== */ (async () => { const imgHeight = GM_getValue('配置项.imgHeight', 0); const defaultDisplayMode = GM_getValue('配置项.defaultDisplayMode', 'hide'); GM_addStyle(` p.content:not(:has(a)).hide {display: none;} h2.title.hide {color: #a3a3a3;} h2.title.hide::after { content: 'hide'; font-size: 50%; border-radius: 10px; margin: 0 0 10px 10px; background-color: #a3a3a36b; padding: 5px; color: #fff; } p.content > img.zoom { height: ${imgHeight === 0 ? 'auto' : `${imgHeight}px`} } `) await elmGetter.get('#main-content > h2'); let index = 0; document.querySelectorAll('#main-content > h2, #main-content > p').forEach(element => { defaultDisplayMode === 'hide' && element.classList.add('hide') // title if (element.tagName === 'H2') { element.dataset.index = ++index; element.classList.add('title') return; } // content element.dataset.index = index; element.classList.add('content') // img content const imgElement = element.querySelector('img'); if (imgElement) { imgElement.classList.add('img-content', 'zoom') } }) document.querySelector('#main-content').addEventListener('click', (e) => { e.preventDefault() const element = e.target; const index = element.dataset.index; if (element.classList.contains('title')) { document.querySelectorAll(`[data-index="${index}"]`).forEach(ele => { ele.classList.toggle('hide') }) } else if (element.classList.contains('img-content')) { element.classList.toggle('zoom') } }) })()