Skip to content

Commit bdab599

Browse files
committed
新增 [收起当前回答(点击空白处)] 功能
1 parent 305c264 commit bdab599

1 file changed

Lines changed: 57 additions & 17 deletions

File tree

Zhihu-Enhanced.user.js

Lines changed: 57 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
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
@@ -19,12 +19,14 @@
1919
// ==/UserScript==
2020

2121
var 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;
2728
if (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)};
2830
if (menu_publishTop == null){menu_publishTop = true; GM_setValue('xiu2_menu_publishTop', menu_publishTop)};
2931
if (menu_typeTips == null){menu_typeTips = true; GM_setValue('xiu2_menu_typeTips', menu_typeTips)};
3032
if (menu_allTime == null){menu_allTime = true; GM_setValue('xiu2_menu_allTime', menu_allTime)};
@@ -33,27 +35,31 @@ registerMenuCommand();
3335

3436
// 注册脚本菜单
3537
function 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
// 一键收起回答
361367
function 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+
378406
var postNum;
379407
// 区分问题文章
380408
function addTypeTips() {
381409
if(menu_typeTips){
382410
// URL 匹配正则表达式
383-
var patt_zhuanlan = /zhuanlan.zhihu.com/,
411+
let patt_zhuanlan = /zhuanlan.zhihu.com/,
384412
patt_question = /question\/\d+/,
385413
patt_question_answer = /answer\/\d+/,
386414
patt_video = /\/zvideo\//,
387415
patt_tip = /zhihu_e_tips/
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

Comments
 (0)