// ==UserScript==
// @name 知乎手机网页版
// @namespace http://tampermonkey.net/
// @version 2024/12/18.1
// @description 知乎手机网页版,用PC模式,去赞按钮,改元素宽度适应手机
// @author longlongloveyou
// @match *://www.zhihu.com/*
// @grant none
// @license longlongloveyou
// ==/UserScript==
(function() {
'use strict';
//屏蔽某些元素
var idlist=[
'.Card.TopstoryItem.TopstoryItem--advertCard.TopstoryItem-isRecommend', //广告?
'.AppHeader-inner.css-ellrqg',
'.css-1qyytj7',
'.AppHeader-inner.css-11p8nt5',
'.Button.VoteButton',
'.Zi.Zi--TriangleDown',
'button[aria-live="polite"]',
'.Button.Menu-item.ContentItem-action.Button--plain',
'.Button.VoteButton.VoteButton--up.FEfUrdfMIKpQDJDqkjte',
'.Popover.ShareMenu.ContentItem-action',
'.Popover.ContentItem-action',
'.CornerButtons',
'div[id=_scroll-padding-polyfill_]'
]
var blockid=[
{'.KfeCollection-AnswerTopCard-Container':5}, //盐选回答
{'[class*="AuthorInfo-badgeText"]':2}, //作者简介
]
hide(idlist);
var backcolor='#ebedf0'; //页面默认颜色
// 使用 MutationObserver 监听 DOM 变化,确保动态加载的元素也被隐藏
var observer = new MutationObserver(function(mutations) {
document.querySelectorAll('div').forEach(div => {div.style.backgroundColor = backcolor;})
block(blockid); //隐藏动态加载的作者、盐选
mutations.forEach(function(mutation) {
// 只有当子节点被添加时,我们才进行隐藏处理
if (mutation.type === 'childList') {
hide(idlist); // 再次调用 hide 函数,隐藏新加载的元素
}
});
});
// 配置 MutationObserver 监听 DOM 树的变化
var config = { childList: true, subtree: true };
// 选取目标节点,通常是 body 元素
var targetNode = document.body;
// 启动观察器
observer.observe(targetNode, config);
var display_width = document.documentElement.clientWidth-10;
var total_width = display_width-100;
var padding = Math.round(display_width/120);
var nod = document.createElement('style');
var str=
'div.Topstory-container, \n'+ //知乎主页主框
'div.Topstory-mainColumn, \n'+ //知乎主页左边文章列表框
'div.Topstory-mainColumn img._1sezuny, \n'+ //知乎主页文章列表图片
'div.Topstory-mainColumn video, \n'+ //知乎主页文章列表视频
'div.QuestionHeader-main, \n'+ //知乎答案顶栏
'div.Question-mainColumn, \n'+ //知乎答案左边文章内容
'div.css-78p1r9, header.Post-Header, div.Post-RichTextContainer,\n'+ //知乎专栏文章
'div.Post-Sub.Post-NormalSub>div, \n'+ //知乎专栏评论区
'div.css-1cqr2ue, \n'+ //知乎答案评论回复
'div.Search-container, div.SearchMain \n'+ //知乎搜索结果列表
'{width:' +display_width+ 'px !important;} \n'+
'div.Topstory-container, \n'+ //知乎主页主框
'div.Pc-feedAd-container, div.Pc-feedAd-card-content-detail, \n'+ //知乎主页广告卡片
'div.QuestionHeader-main, \n'+ //知乎答案顶栏
'div.Question-main, \n'+ //知乎答案包括右边栏
'div.QuestionAnswer-content, \n'+ //知乎答案页主答案
'div.List-item, \n'+ //知乎答案页后续答案
'div.css-78p1r9, header.Post-Header, div.Post-RichTextContainer, \n'+ //知乎专栏
'div.Search-container, div.List-item, ContentItem-actions \n'+ //知乎搜索结果列表
'{padding-left:' +padding+ 'px !important; \n'+
' padding-right:' +padding+ 'px !important; \n'+
' margin-left:2px !important; \n'+
' margin-right:0px !important;} \n'+
'div.Pc-feedAd-card-content \n'+ //知乎主页广告外框
'{flex-direction:column;} \n'+
'div.Question-main \n'+ //知乎答案包括右边栏
'{width:' +total_width+ 'px;} \n'+
'div.Post-content \n'+ //知乎专栏?
'{min-width:' +display_width+ 'px !important;} \n'+
'div.css-1aq8hf9 {width:' +total_width + 'px !important;} \n'+ //评论框的宽度
'button[aria-label="关闭"] {left:20px;top:100px;background-color:#4f4f4f}; \n'+ //评论框的关闭按钮
'div.RichContent-inner \n'+ //知乎搜索结果
'{overflow:hidden !important;} \n'+
'Button.css-1x9te0t \n'+ //知乎回答评论回复关闭按钮
'{background:teal; right:8px; padding:0px} \n'+
'div.Card.TopstoryItem.TopstoryItem-isRecommend, \n'+ //知乎主页文章列表卡片
'{padding-left:' +padding+ 'px !important; \n'+
' padding-right:' + '0px !important; \n'+
' margin-left:0px !important; \n'+
' background-color:#b6a8c3 !important; \n'+
' margin-right:0px !important;} \n'+
'{width:' +display_width+ 'px !important;} \n'+
'span[itemprop="text"] p \n'+
'{font-size:17px !important;} \n'+
'div {background:' + backcolor + ';} \n'+
'Button.Button.Menu-item.ContentItem-action.Button--plain,\n'+
'{width:' +50+ 'px !important;} \n'+
'[class*="Button ContentItem-action"] {left:30px;padding-left:30px !important;} \n'+ //评论按钮稍往右移
'span.RichContent-collapsedText,div.css-p1wstz {left:20px;position:absolute;padding-left:20px; left:10px;padding-right:10px; !importan} \n' //收起按钮放左边
;
nod.innerHTML=str;
document.getElementsByTagName('head')[0].appendChild(nod);
const colors = ['#f4d2c3', '#9bb5da', '#9bdaaf', '#ebedf0'];
const text=['开心橙','忧郁蓝','苹果绿','灰太郎']
addbutton(colors);
changecolor(colors);
void(0);
function addbutton(colors){
const buttonContainer = document.createElement('div');
buttonContainer.style.position = 'fixed';
buttonContainer.style.top = '10px';
buttonContainer.style.width = display_width-50;
buttonContainer.style.left = '15px';
buttonContainer.style.zIndex = '9999';
buttonContainer.style.backgroundColor = 'rgba(255, 255, 255, 0.9)';
buttonContainer.style.border = '1px solid #ccc';
buttonContainer.style.padding = '3px';
buttonContainer.style.borderRadius = '1px';
document.body.appendChild(buttonContainer);
var i=1
colors.forEach(color => {
const button = document.createElement('button');
//button.textContent = color.charAt(0).toUpperCase() + color.slice(1); // 设置按钮文本
button.textContent=text[i-1]
button.style.margin = '5px';
button.style.left = '5px';
button.style.padding = '5px 10px';
button.style.border = '1px solid #000';
button.style.cursor = 'pointer';
button.id=i
buttonContainer.appendChild(button); // 将按钮添加到容器中
i++;
})
}
function block(idlist) { //{'.KfeCollection-AnswerTopCard-Container':5},
idlist.forEach(function (item) {
for (var selector in item) {
var levels = item[selector];
var contentItemActions = document.querySelectorAll(selector);
contentItemActions.forEach(function (element) {
var currentElement = element;
for (var i = 0; i < levels; i++) {
if (currentElement.parentElement) {
currentElement = currentElement.parentElement;
if (currentElement.tagName === 'DIV') {
if (levels!=5){ //让盐选闪烁
currentElement.style.display = 'none';
}else{ // 让盐选闪烁3次再隐藏
let blinkCount = 0;
const interval = setInterval(() => {
blinkCount++;
if (blinkCount <= 6) { // 切换可见性(奇数次隐藏,偶数次显示)
div.style.backgroundColor='#888888';
div.style.visibility = (div.style.visibility === 'hidden') ? 'visible' : 'hidden';
} else { // 闪烁结束后清除定时器并隐藏元素
clearInterval(interval);
div.style.display = 'none';
}
}, 200); // 每次闪烁间隔 200 毫秒
}
}
} else {
break; // 如果没有父级了,停止查找
}
}
});
}
});
}
function hide(idlist) {
idlist.forEach(function(ids) {
var contentItemActions = document.querySelectorAll(ids);
contentItemActions.forEach(function(element) {
element.style.display = 'none';
});
});
}
function changecolor(colors){
// 定义按钮数据和功能
var i=1
colors.forEach(color => {
var button = document.getElementById(i);
button.onclick = () => {
// 改变所有 div 的背景颜色
document.querySelectorAll('div').forEach(div => {
div.style.backgroundColor = color;
backcolor=color;
});
};
i++
});
}
})();