11// ==UserScript==
22// @name 知乎增强
3- // @version 1.2.5
3+ // @version 1.2.6
44// @author X.I.U
5- // @description 移除登录弹窗、一键收起回答、置顶显示时间、显示问题时间、区分问题文章、默认高清原图、默认站外直链
5+ // @description 移除登录弹窗、一键收起回答、收起当前回答(点击空白处)、 置顶显示时间、显示问题时间、区分问题文章、默认高清原图、默认站外直链
66// @match *://www.zhihu.com/*
77// @match *://zhuanlan.zhihu.com/*
88// @icon https://static.zhihu.com/heifetz/favicon.ico
1919// ==/UserScript==
2020
2121var menu_collapsedAnswer = GM_getValue ( 'xiu2_menu_collapsedAnswer' ) ,
22+ menu_collapsedNowAnswer = GM_getValue ( 'xiu2_menu_collapsedNowAnswer' ) ,
2223 menu_publishTop = GM_getValue ( 'xiu2_menu_publishTop' ) ,
2324 menu_allTime = GM_getValue ( 'xiu2_menu_allTime' ) ,
2425 menu_typeTips = GM_getValue ( 'xiu2_menu_typeTips' ) ,
2526 menu_directLink = GM_getValue ( 'xiu2_menu_directLink' ) ,
26- menu_collapsedAnswer_ID , menu_publishTop_ID , menu_typeTips_ID , menu_allTime_ID , menu_directLink_ID , menu_feedBack_ID ;
27+ menu_collapsedAnswer_ID , menu_collapsedNowAnswer_ID , menu_publishTop_ID , menu_typeTips_ID , menu_allTime_ID , menu_directLink_ID , menu_feedBack_ID ;
2728if ( menu_collapsedAnswer == null ) { menu_collapsedAnswer = true ; GM_setValue ( 'xiu2_menu_collapsedAnswer' , menu_collapsedAnswer ) } ;
29+ if ( menu_collapsedNowAnswer == null ) { menu_collapsedNowAnswer = true ; GM_setValue ( 'xiu2_menu_collapsedNowAnswer' , menu_collapsedNowAnswer ) } ;
2830if ( menu_publishTop == null ) { menu_publishTop = true ; GM_setValue ( 'xiu2_menu_publishTop' , menu_publishTop ) } ;
2931if ( menu_typeTips == null ) { menu_typeTips = true ; GM_setValue ( 'xiu2_menu_typeTips' , menu_typeTips ) } ;
3032if ( menu_allTime == null ) { menu_allTime = true ; GM_setValue ( 'xiu2_menu_allTime' , menu_allTime ) } ;
@@ -33,27 +35,31 @@ registerMenuCommand();
3335
3436// 注册脚本菜单
3537function registerMenuCommand ( ) {
36- var menu_collapsedAnswer_ , menu_publishTop_ , menu_typeTips_ , menu_allTime_ , menu_directLink_ ;
38+ var menu_collapsedAnswer_ , menu_collapsedNowAnswer_ , menu_publishTop_ , menu_typeTips_ , menu_allTime_ , menu_directLink_ ;
3739 if ( menu_feedBack_ID ) { // 如果反馈菜单ID不是 null,则删除所有脚本菜单
3840 GM_unregisterMenuCommand ( menu_collapsedAnswer_ID ) ;
41+ GM_unregisterMenuCommand ( menu_collapsedNowAnswer_ID ) ;
3942 GM_unregisterMenuCommand ( menu_publishTop_ID ) ;
4043 GM_unregisterMenuCommand ( menu_typeTips_ID ) ;
4144 GM_unregisterMenuCommand ( menu_directLink_ID ) ;
4245 GM_unregisterMenuCommand ( menu_feedBack_ID ) ;
4346 menu_collapsedAnswer = GM_getValue ( 'xiu2_menu_collapsedAnswer' ) ;
47+ menu_collapsedNowAnswer = GM_getValue ( 'xiu2_menu_collapsedNowAnswer' ) ;
4448 menu_publishTop = GM_getValue ( 'xiu2_menu_publishTop' ) ;
4549 menu_allTime = GM_getValue ( 'xiu2_menu_allTime' ) ;
4650 menu_typeTips = GM_getValue ( 'xiu2_menu_typeTips' ) ;
4751 menu_directLink = GM_getValue ( 'xiu2_menu_directLink' ) ;
4852 }
4953
5054 if ( menu_collapsedAnswer ) { menu_collapsedAnswer_ = "√" ; } else { menu_collapsedAnswer_ = "×" ; }
55+ if ( menu_collapsedNowAnswer ) { menu_collapsedNowAnswer_ = "√" ; } else { menu_collapsedNowAnswer_ = "×" ; }
5156 if ( menu_publishTop ) { menu_publishTop_ = "√" ; } else { menu_publishTop_ = "×" ; }
5257 if ( menu_typeTips ) { menu_typeTips_ = "√" ; } else { menu_typeTips_ = "×" ; }
5358 if ( menu_allTime ) { menu_allTime_ = "√" ; } else { menu_allTime_ = "×" ; }
5459 if ( menu_directLink ) { menu_directLink_ = "√" ; } else { menu_directLink_ = "×" ; }
5560
5661 menu_collapsedAnswer_ID = GM_registerMenuCommand ( `[ ${ menu_collapsedAnswer_ } ] 一键收起回答` , function ( ) { menu_switch ( menu_collapsedAnswer , 'xiu2_menu_collapsedAnswer' , '一键收起回答' ) } ) ;
62+ menu_collapsedNowAnswer_ID = GM_registerMenuCommand ( `[ ${ menu_collapsedNowAnswer_ } ] 收起当前回答(点击空白处)` , function ( ) { menu_switch ( menu_collapsedNowAnswer , 'xiu2_menu_collapsedNowAnswer' , '收起当前回答' ) } ) ;
5763 menu_publishTop_ID = GM_registerMenuCommand ( `[ ${ menu_publishTop_ } ] 置顶显示时间` , function ( ) { menu_switch ( menu_publishTop , 'xiu2_menu_publishTop' , '置顶显示时间' ) } ) ;
5864 menu_publishTop_ID = GM_registerMenuCommand ( `[ ${ menu_allTime_ } ] 完整显示时间` , function ( ) { menu_switch ( menu_allTime , 'xiu2_menu_allTime' , '完整显示时间' ) } ) ;
5965 menu_typeTips_ID = GM_registerMenuCommand ( `[ ${ menu_typeTips_ } ] 区分问题文章` , function ( ) { menu_switch ( menu_typeTips , 'xiu2_menu_typeTips' , '区分问题文章' ) } ) ;
@@ -294,7 +300,7 @@ function directLink () {
294300 else if ( $ ( this ) . attr ( "href" ) . indexOf ( "link.zhihu.com/?target=" ) > - 1 ) {
295301 external_href = $ ( this ) . attr ( "href" ) ;
296302 new_href = external_href . substring ( external_href = $ ( this ) . attr ( "href" ) . indexOf ( "link.zhihu.com/?target=" ) + "link.zhihu.com/?target=" . length ) ;
297- console . log ( `${ new_href } ` )
303+ // console.log(`${new_href}`)
298304 $ ( this ) . attr ( "href" , decodeURIComponent ( new_href ) ) ;
299305 }
300306 else {
@@ -360,8 +366,8 @@ function originalPic(){
360366// 一键收起回答
361367function collapsedAnswer ( ) {
362368 if ( menu_collapsedAnswer ) {
363- var button_Add = `<button id="collapsed-button" data-tooltip="收起回答" data-tooltip-position="left" data-tooltip-will-hide-on-click="false" aria-label="收起回答" type="button" class="Button CornerButton Button--plain"><svg class="ContentItem-arrowIcon is-active" aria-label="收起回答" fill="currentColor" viewBox="0 0 24 24" width="24" height="24"><path d="M16.036 19.59a1 1 0 0 1-.997.995H9.032a.996.996 0 0 1-.997-.996v-7.005H5.03c-1.1 0-1.36-.633-.578-1.416L11.33 4.29a1.003 1.003 0 0 1 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.005z"></path></svg></button>`
364- var style_Add = document . createElement ( 'style' ) ;
369+ let button_Add = `<button id="collapsed-button" data-tooltip="收起回答" data-tooltip-position="left" data-tooltip-will-hide-on-click="false" aria-label="收起回答" type="button" class="Button CornerButton Button--plain"><svg class="ContentItem-arrowIcon is-active" aria-label="收起回答" fill="currentColor" viewBox="0 0 24 24" width="24" height="24"><path d="M16.036 19.59a1 1 0 0 1-.997.995H9.032a.996.996 0 0 1-.997-.996v-7.005H5.03c-1.1 0-1.36-.633-.578-1.416L11.33 4.29a1.003 1.003 0 0 1 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.005z"></path></svg></button>`
370+ let style_Add = document . createElement ( 'style' ) ;
365371 style_Add . innerHTML = '.CornerButton{margin-bottom:8px !important;}.CornerButtons{bottom:45px !important;}' ;
366372 document . head . appendChild ( style_Add ) ;
367373 $ ( ".CornerAnimayedFlex" ) . prepend ( button_Add ) ;
@@ -375,21 +381,43 @@ function collapsedAnswer(){
375381 }
376382}
377383
384+ // 收起当前回答(收起回答)
385+ function collapsedNowAnswer_2 ( ) {
386+ let rightButton = document . querySelector ( '.ContentItem-actions.Sticky.RichContent-actions.is-fixed.is-bottom' )
387+ if ( rightButton ) {
388+ rightButton = rightButton . querySelector ( '.ContentItem-rightButton' )
389+ if ( rightButton && rightButton . attributes [ 0 ] . name === "data-zop-retract-question" ) {
390+ rightButton . click ( ) ;
391+ }
392+ }
393+ }
394+
395+ // 收起当前回答(监听点击事件)
396+ function collapsedNowAnswer ( selectors ) {
397+ if ( menu_collapsedNowAnswer ) {
398+ document . querySelector ( selectors ) . onclick = function ( event ) {
399+ if ( event . target == this ) {
400+ collapsedNowAnswer_2 ( ) ;
401+ }
402+ }
403+ }
404+ }
405+
378406var postNum ;
379407// 区分问题文章
380408function addTypeTips ( ) {
381409 if ( menu_typeTips ) {
382410 // URL 匹配正则表达式
383- var patt_zhuanlan = / z h u a n l a n .z h i h u .c o m / ,
411+ let patt_zhuanlan = / z h u a n l a n .z h i h u .c o m / ,
384412 patt_question = / q u e s t i o n \/ \d + / ,
385413 patt_question_answer = / a n s w e r \/ \d + / ,
386414 patt_video = / \/ z v i d e o \/ / ,
387415 patt_tip = / z h i h u _ e _ t i p s /
388- var postList = document . querySelectorAll ( 'h2.ContentItem-title a' ) ;
416+ let postList = document . querySelectorAll ( 'h2.ContentItem-title a' ) ;
389417 postNum = document . querySelectorAll ( 'small.zhihu_e_tips' ) ;
390418 //console.log(`${postList.length} ${postNum.length}`)
391419 if ( postList . length > postNum . length ) {
392- for ( var num = postNum . length ; num < postList . length ; num ++ ) {
420+ for ( let num = postNum . length ; num < postList . length ; num ++ ) {
393421 if ( ! patt_tip . test ( postList [ num ] . innerHTML ) ) { // 判断是否已添加
394422 if ( patt_zhuanlan . test ( postList [ num ] . href ) ) { // 如果是文章
395423 postList [ num ] . innerHTML = `<small class="zhihu_e_tips" style="color: #ffffff;font-weight: normal;font-size: 12px;padding: 0 3px;border-radius: 2px;background-color: #2196F3;display: inline-block;height: 18px;">文章</small> ` + postList [ num ] . innerHTML
@@ -477,36 +505,48 @@ function EventXMLHttpRequest() {
477505 }
478506 } )
479507
508+
480509 setInterval ( originalPic , 100 ) ; // 默认高清原图
481510 if ( menu_directLink ) setInterval ( directLink , 100 ) ; // 默认站外直链
482511
483- // 每个页面对应的功能函数
484- if ( window . location . href . indexOf ( "question" ) > - 1 ) { // 回答页 //
512+
513+ if ( window . location . href . indexOf ( "question" ) > - 1 ) { // 回答页 //
485514 if ( window . location . href . indexOf ( "waiting" ) == - 1 ) {
486515 collapsedAnswer ( ) ; // 一键收起回答
516+ collapsedNowAnswer ( ".QuestionPage" ) ;
517+ collapsedNowAnswer ( ".Question-main" ) ;
487518 }
488519 setInterval ( topTime_question , 300 ) ; // 置顶显示时间
489- } else if ( window . location . href . indexOf ( "search" ) > - 1 ) { // 搜索结果页 //
520+ } else if ( window . location . href . indexOf ( "search" ) > - 1 ) { // 搜索结果页 //
490521 collapsedAnswer ( ) ; // 一键收起回答
522+ collapsedNowAnswer ( "main div" ) ;
523+ collapsedNowAnswer ( ".Search-container" ) ;
491524 setInterval ( topTime_search , 300 ) ; // 置顶显示时间
492525 EventXMLHttpRequest ( ) ; // 区分问题文章
493- } else if ( window . location . href . indexOf ( "topic" ) > - 1 ) { // 话题页 //
526+ } else if ( window . location . href . indexOf ( "topic" ) > - 1 ) { // 话题页 //
494527 if ( window . location . href . indexOf ( "unanswered" ) == - 1 ) {
495528 collapsedAnswer ( ) ; // 一键收起回答
529+ collapsedNowAnswer ( "main.App-main" ) ;
530+ collapsedNowAnswer ( ".ContentLayout" ) ;
496531 setInterval ( topTime_search , 300 ) ; // 置顶显示时间
497532 EventXMLHttpRequest ( ) ; // 区分问题文章
498533 }
499- } else if ( window . location . href . indexOf ( "zhuanlan" ) > - 1 ) { // 文章 //
534+ } else if ( window . location . href . indexOf ( "zhuanlan" ) > - 1 ) { // 文章 //
500535 removeLogin ( ) ; // 移除登录弹窗
501536 setInterval ( topTime_zhuanlan , 300 ) ; // 置顶显示时间
502- } else if ( window . location . href . indexOf ( "column" ) > - 1 ) { // 专栏 //
537+ } else if ( window . location . href . indexOf ( "column" ) > - 1 ) { // 专栏 //
503538 collapsedAnswer ( ) ; // 一键收起回答
539+ collapsedNowAnswer ( "main div" ) ;
504540 setInterval ( topTime_zhuanlan , 300 ) ; // 置顶显示时间
505541 } else if ( window . location . href . indexOf ( "people" ) > - 1 || window . location . href . indexOf ( "org" ) > - 1 ) { // 用户主页 //
506542 collapsedAnswer ( ) ; // 一键收起回答
543+ collapsedNowAnswer ( "main div" ) ;
544+ collapsedNowAnswer ( ".Profile-main" ) ;
507545 setInterval ( topTime_people , 300 ) ; // 置顶显示时间
508- } else { // 首页 //
546+ } else { // 首页 //
509547 collapsedAnswer ( ) ; // 一键收起回答
548+ collapsedNowAnswer ( "main div" ) ;
549+ collapsedNowAnswer ( ".Topstory-container" ) ;
510550 setInterval ( topTime_index , 300 ) ; // 置顶显示时间
511551 EventXMLHttpRequest ( ) ; // 区分问题文章
512552 }
0 commit comments