11// ==UserScript==
22// @name 知乎增强
3- // @version 1.2.9
3+ // @version 1.3.0
44// @author X.I.U
55// @description 移除登录弹窗、一键收起回答、收起当前回答/评论(点击两侧空白处)、置顶显示时间、显示问题时间、区分问题文章、默认高清原图、默认站外直链
66// @match *://www.zhihu.com/*
@@ -389,8 +389,8 @@ function collapsedNowAnswer(selectors){
389389 document . querySelector ( selectors ) . onclick = function ( event ) {
390390 if ( event . target == this ) {
391391 let rightButton = document . querySelector ( '.ContentItem-actions.Sticky.RichContent-actions.is-fixed.is-bottom' )
392- if ( rightButton ) {
393- // 先判断是否展开了评论(非评论弹窗)
392+ if ( rightButton ) { // 悬浮 [收起回答]
393+ // 固定 [收起评论]
394394 let commentCollapseButton = rightButton . querySelector ( 'button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel' )
395395 if ( commentCollapseButton && commentCollapseButton . innerText . indexOf ( "收起评论" ) > - 1 ) {
396396 commentCollapseButton . click ( ) ; // 收起评论
@@ -399,19 +399,53 @@ function collapsedNowAnswer(selectors){
399399 if ( rightButton && rightButton . attributes [ 0 ] . name === "data-zop-retract-question" ) {
400400 rightButton . click ( ) ; // 收起回答
401401 }
402+ } else { // 固定 [收起回答]
403+ document . querySelectorAll ( '.ContentItem-rightButton' ) . forEach ( function ( el ) {
404+ if ( el . attributes [ 0 ] . name === "data-zop-retract-question" ) {
405+ if ( isElementInViewport ( el ) ) {
406+ let commentCollapseButton = document . querySelector ( '.ContentItem-rightButton' ) . parentNode . querySelector ( 'button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel' )
407+ if ( commentCollapseButton && commentCollapseButton . innerText . indexOf ( "收起评论" ) > - 1 ) {
408+ commentCollapseButton . click ( ) ; // 收起评论
409+ }
410+ el . click ( )
411+ }
412+ }
413+ } )
402414 }
403415
404- // 如果当前在看评论,则收起评论
416+ // 悬浮 [收起评论]
405417 let commentCollapseButton = document . querySelector ( '.CommentCollapseButton' )
406418 if ( commentCollapseButton ) {
407419 commentCollapseButton . click ( ) ;
420+ } else { // 固定 [收起评论](针对短篇没有收起按钮的回答)
421+ document . querySelectorAll ( 'button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel' ) . forEach ( function ( el ) {
422+ if ( el . innerText . indexOf ( "收起评论" ) > - 1 ) {
423+ if ( isElementInViewport ( el ) ) {
424+ el . click ( )
425+ }
426+ }
427+ } )
408428 }
409429 }
410430 }
411431 }
412432}
413433
414434
435+ //获取元素是否在可视区域
436+ function isElementInViewport ( el ) {
437+ let rect = el . getBoundingClientRect ( ) ;
438+ return (
439+ rect . top >= 0 &&
440+ rect . left >= 0 &&
441+ rect . bottom <=
442+ ( window . innerHeight || document . documentElement . clientHeight ) &&
443+ rect . right <=
444+ ( window . innerWidth || document . documentElement . clientWidth )
445+ ) ;
446+ }
447+
448+
415449var postNum ;
416450// 区分问题文章
417451function addTypeTips ( ) {
0 commit comments