diff --git a/Zhihu-Enhanced.user.js b/Zhihu-Enhanced.user.js index 85e3266..9a85a47 100644 --- a/Zhihu-Enhanced.user.js +++ b/Zhihu-Enhanced.user.js @@ -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() {