Greasy Fork is available in English.
可隐藏知乎首页的列表图片和展开的内容图片,极大程度被发现上班在划水刷知乎。快捷键(双击H、双击G)
当前为
// ==UserScript==
// @name 上班快乐刷知乎
// @namespace http://tampermonkey.net/
// @version 0.1.2
// @description 可隐藏知乎首页的列表图片和展开的内容图片,极大程度被发现上班在划水刷知乎。快捷键(双击H、双击G)
// @author You
// @match https://www.zhihu.com/
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
;(function () {
'use strict'
const getBool = val => {
if (val === null) return true
if (val === 'true') return true
if (val === 'false') return false
return true
}
// 外层图片
const localIfShowOuterImg = localStorage.getItem('ifShowOuterImg')
var ifShowOuterImg = getBool(localIfShowOuterImg)
// 内层富文本图片
const localIfShowInnerImg = localStorage.getItem('ifShowInnerImg')
var ifShowInnerImg = getBool(localIfShowInnerImg)
/** --------------------- 添加图片控制事件 --------------------- */
function handleImgBox(ele, ifShowOuterImg) {
const imgParentLists = document.querySelectorAll(ele)
imgParentLists.forEach(item => {
item.style.display = ifShowOuterImg ? 'block' : 'none'
})
}
// 外层
var outerImg = status => handleImgBox('.RichContent-cover', status)
var updateOuterImg = status => {
ifShowOuterImg = status
localStorage.setItem('ifShowOuterImg', status)
outerImg(status)
const btn = document.getElementById('outer-btn')
btn.style.opacity = status ? 1 : 0.5
}
// 内层
var innerImg = status => handleImgBox('.RichContent-inner img', status)
var updateInnerImg = status => {
ifShowInnerImg = status
localStorage.setItem('ifShowInnerImg', status)
innerImg(status)
const btn = document.getElementById('inner-btn')
btn.style.opacity = status ? 1 : 0.5
}
if (ifShowOuterImg === false) setTimeout(() => updateOuterImg(false))
if (ifShowInnerImg === false) setTimeout(() => updateInnerImg(false))
/** --------------------- 添加图片控制事件 --------------------- */
/** --------------------- 页面新增按钮 --------------------- */
function addEle({ tag, id, text, style, callback }) {
var element = document.createElement(tag)
element.id = id
element.innerText = text
element.style.cssText = style
if (callback) {
element.addEventListener('click', callback)
}
document.body.appendChild(element)
}
const listBtnStyle = `
position: fixed;
bottom: 16%;
right: 15px;
border-radius: 50px;
// width: 80px;
height: 35px;
background: #056De8;
color: #fff;
padding: 0 10px;
`
const richTextBtnStyle = `
position: fixed;
bottom: 10%;
right: 15px;
border-radius: 50px;
// width: 80px;
height: 35px;
background: #056De8;
color: #fff;
padding: 0 10px;
`
addEle({
id: 'outer-btn',
tag: 'button',
text: '列表图片',
style: listBtnStyle,
callback: () => {
updateOuterImg(!ifShowOuterImg)
}
})
addEle({
id: 'inner-btn',
tag: 'button',
text: '富文本图片',
style: richTextBtnStyle,
callback: () => {
updateInnerImg(!ifShowInnerImg)
}
})
/** --------------------- 页面新增按钮 --------------------- */
// /** --------------------- 双击事件 --------------------- */
function addListener(key, callback) {
var keyPressCount = 0
var keyPressTimeout
document.addEventListener('keydown', function (event) {
if (event.key.toLowerCase() === key.toLowerCase()) {
keyPressCount++
if (keyPressCount === 1) {
keyPressTimeout = setTimeout(function () {
keyPressCount = 0
}, 300) // 设置延迟时间,可以根据需要调整
} else if (keyPressCount === 2) {
clearTimeout(keyPressTimeout)
callback()
keyPressCount = 0
}
}
})
}
addListener('H', () => {
updateOuterImg(!ifShowOuterImg)
})
addListener('G', () => {
updateInnerImg(!ifShowInnerImg)
})
// /** --------------------- 双击事件 --------------------- */
/** --------------------- 监听列表变化 --------------------- */
// 目标元素的选择器
var targetSelector = '.css-1fsnuue'
// 创建一个 MutationObserver 实例
var observer = new MutationObserver(function (mutationsList) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
// 检查是否有新的子节点添加或移除
var targetElement = mutation.target
var childNodes = targetElement.querySelectorAll(':scope > *')
var length = childNodes.length
// 执行你的处理逻辑
// 外层
outerImg(ifShowOuterImg)
// 内层
innerImg(ifShowInnerImg)
}
}
})
// 配置 MutationObserver 监听的选项
var observerOptions = {
childList: true, // 监听子节点的变化
subtree: true // 监听所有后代节点的变化
}
// 获取目标元素
var targetElement = document.querySelector(targetSelector)
if (targetElement) {
// 开始监听目标元素的变化
observer.observe(targetElement, observerOptions)
} else {
console.log('目标元素不存在!')
}
/** --------------------- 监听列表变化 --------------------- */
})()