优化 [收起当前回答/评论] 功能

This commit is contained in:
xiu2
2021-03-28 17:06:54 +08:00
parent 20c7523a8d
commit 8567a2ee66
+38 -4
View File
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 知乎增强
// @version 1.2.9
// @version 1.3.0
// @author X.I.U
// @description 移除登录弹窗、一键收起回答、收起当前回答/评论(点击两侧空白处)、置顶显示时间、显示问题时间、区分问题文章、默认高清原图、默认站外直链
// @match *://www.zhihu.com/*
@@ -389,8 +389,8 @@ function collapsedNowAnswer(selectors){
document.querySelector(selectors).onclick = function(event){
if (event.target==this) {
let rightButton = document.querySelector('.ContentItem-actions.Sticky.RichContent-actions.is-fixed.is-bottom')
if(rightButton) {
// 先判断是否展开了评论(非评论弹窗)
if(rightButton) { // 悬浮 [收起回答]
// 固定 [收起评论]
let commentCollapseButton = rightButton.querySelector('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel')
if(commentCollapseButton && commentCollapseButton.innerText.indexOf("收起评论") > -1) {
commentCollapseButton.click(); // 收起评论
@@ -399,12 +399,32 @@ function collapsedNowAnswer(selectors){
if(rightButton && rightButton.attributes[0].name === "data-zop-retract-question") {
rightButton.click(); // 收起回答
}
}else{ // 固定 [收起回答]
document.querySelectorAll('.ContentItem-rightButton').forEach(function (el) {
if (el.attributes[0].name === "data-zop-retract-question") {
if (isElementInViewport(el)) {
let commentCollapseButton = document.querySelector('.ContentItem-rightButton').parentNode.querySelector('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel')
if(commentCollapseButton && commentCollapseButton.innerText.indexOf("收起评论") > -1) {
commentCollapseButton.click(); // 收起评论
}
el.click()
}
}
})
}
// 如果当前在看评论,则收起评论
// 悬浮 [收起评论]
let commentCollapseButton = document.querySelector('.CommentCollapseButton')
if(commentCollapseButton) {
commentCollapseButton.click();
}else{ // 固定 [收起评论](针对短篇没有收起按钮的回答)
document.querySelectorAll('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel').forEach(function (el) {
if (el.innerText.indexOf("收起评论") > -1) {
if (isElementInViewport(el)) {
el.click()
}
}
})
}
}
}
@@ -412,6 +432,20 @@ function collapsedNowAnswer(selectors){
}
//获取元素是否在可视区域
function isElementInViewport(el) {
let rect = el.getBoundingClientRect();
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <=
(window.innerHeight || document.documentElement.clientHeight) &&
rect.right <=
(window.innerWidth || document.documentElement.clientWidth)
);
}
var postNum;
// 区分问题文章
function addTypeTips() {