Skip to content

Commit 33865ff

Browse files
committed
修复 [移除登录弹窗] 在部分情况下失效的问题; 优化 [区分问题文章] 功能
1 parent c714ecf commit 33865ff

1 file changed

Lines changed: 36 additions & 27 deletions

File tree

Zhihu-Enhanced.user.js

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// ==UserScript==
22
// @name 知乎增强
3-
// @version 1.6.0
3+
// @version 1.6.1
44
// @author X.I.U
55
// @description 移除登录弹窗、默认收起回答、一键收起回答、收起当前回答/评论(点击两侧空白处)、快捷回到顶部(右键两侧空白处)、屏蔽用户 (发布的内容)、屏蔽关键词(标题/评论)、屏蔽盐选内容、展开问题描述、置顶显示时间、显示问题时间、区分问题文章、直达问题按钮、默认高清原图、默认站外直链
66
// @match *://www.zhihu.com/*
@@ -97,10 +97,10 @@ function getCollapsedAnswerObserver() {
9797
if (!mutation.target.classList.contains('RichContent')) continue
9898
for (const addedNode of mutation.addedNodes) {
9999
if (addedNode.nodeType != Node.ELEMENT_NODE) continue
100-
const button = addedNode.querySelector('.ContentItem-actions.Sticky [data-zop-retract-question]')
100+
const button = addedNode.querySelector('.ContentItem-actions.Sticky [data-zop-retract-question]');
101101
if (button) {
102-
mutation.target.setAttribute('script-collapsed', '')
103-
button.click()
102+
mutation.target.setAttribute('script-collapsed', '');
103+
button.click();
104104
return
105105
}
106106
}
@@ -109,20 +109,20 @@ function getCollapsedAnswerObserver() {
109109

110110
observer.start = function() {
111111
if (!this._active) {
112-
this.observe(document, { childList: true, subtree: true })
113-
this._active = true
112+
this.observe(document, { childList: true, subtree: true });
113+
this._active = true;
114114
}
115115
}
116116
observer.end = function() {
117117
if (this._active) {
118-
this.disconnect()
118+
this.disconnect();
119119
}
120120
}
121121

122122
window.addEventListener('locationchange', function() {
123-
observer[location.href.indexOf('/answer/') === -1 ? 'start' : 'end']()
123+
observer[location.href.indexOf('/answer/') === -1 ? 'start' : 'end']();
124124
})
125-
window._collapsedAnswerObserver = observer
125+
window._collapsedAnswerObserver = observer;
126126
}
127127
return window._collapsedAnswerObserver
128128
}
@@ -131,9 +131,9 @@ function getCollapsedAnswerObserver() {
131131
// 默认收起回答
132132
function defaultCollapsedAnswer() {
133133
if (!menu_value('menu_defaultCollapsedAnswer')) return
134-
const observer = getCollapsedAnswerObserver()
134+
const observer = getCollapsedAnswerObserver();
135135
if (location.href.indexOf('/answer/') === -1) {
136-
observer.start()
136+
observer.start();
137137
}
138138
}
139139

@@ -147,27 +147,27 @@ function collapsedAnswer() {
147147
document.getElementById('collapsed-button').onclick = function () {
148148
document.querySelectorAll('[script-collapsed]').forEach(function(scriptCollapsed) {
149149
scriptCollapsed.querySelectorAll('.ContentItem-actions [data-zop-retract-question], .ContentItem-actions.Sticky [data-zop-retract-question]').forEach(function(button) {
150-
button.click()
150+
button.click();
151151
})
152152
})
153153
document.querySelectorAll(':not([script-collapsed]) .ContentItem-actions.Sticky [data-zop-retract-question]').forEach(function(button) {
154-
let el = button.parentElement
155-
while (!el?.classList.contains('RichContent')) {
156-
el = el.parentElement
154+
let el = button.parentElement;
155+
while (!el.classList.contains('RichContent')) {
156+
el = el.parentElement;
157157
}
158158
if (el) {
159-
el.setAttribute('script-collapsed', '')
159+
el.setAttribute('script-collapsed', '');
160160
}
161-
button.click()
161+
button.click();
162162
})
163-
const ob = getCollapsedAnswerObserver()
164-
ob.start()
165-
if (!menu_value('menu_defaultCollapsedAnswer') && !ob._disconnectListener) {
163+
const observer = getCollapsedAnswerObserver();
164+
observer.start();
165+
if (!menu_value('menu_defaultCollapsedAnswer') && !observer._disconnectListener) {
166166
window.addEventListener('locationchange', function() {
167-
ob.end()
168-
window._collapsedAnswerObserver = null
167+
observer.end();
168+
window._collapsedAnswerObserver = null;
169169
})
170-
ob._disconnectListener = true
170+
observer._disconnectListener = true;
171171
}
172172
}
173173
}
@@ -871,6 +871,16 @@ function addTypeTips() {
871871
});
872872
observer.observe(document, { childList: true, subtree: true });
873873

874+
window.addEventListener('locationchange', function(){
875+
if (location.pathname.indexOf('/people/') > -1) {
876+
if (location.pathname.split('/').length === 3) {
877+
observer.observe(document, { childList: true, subtree: true });
878+
} else {
879+
observer.disconnect();
880+
}
881+
}
882+
})
883+
874884
function addTypeTips_(titleA) {
875885
if (!titleA) return // 判断是否为真
876886
if (titleA.querySelector('small.zhihu_e_tips')) return // 判断是否已添加
@@ -947,7 +957,7 @@ function removeLogin() {
947957
for (const target of mutation.addedNodes) {
948958
if (target.nodeType != 1) return
949959
if (target.querySelector('.signFlowModal')) {
950-
let button = target.getElementsByClassName('Button Modal-closeButton Button--plain')[0];
960+
let button = target.querySelector('.Button.Modal-closeButton.Button--plain');
951961
if (button) button.click();
952962
}
953963
}
@@ -965,7 +975,6 @@ function removeLogin() {
965975
const observer = new MutationObserver(removeLoginModal);
966976
observer.observe(document, { childList: true, subtree: true });
967977
document.querySelector('button.AppHeader-login').onclick=function(){location.href='https://www.zhihu.com/signin';} // [登录] 按钮跳转至登录页面
968-
document.querySelector('.AppHeader-profile button.Button--primary').onclick=function(){location.href='https://www.zhihu.com/signin';} // [加入知乎] 按钮跳转至注册页面(实际上是同一个页面)
969978
}
970979
}
971980
}
@@ -980,7 +989,7 @@ function closeFloatingComments() {
980989
if (target.querySelector('.Modal-backdrop')) {
981990
document.querySelector('.Modal-backdrop').onclick = function(event){
982991
if (event.target == this) {
983-
let button = document.getElementsByClassName('Button Modal-closeButton Button--plain')[0];
992+
let button = document.querySelector('.Button.Modal-closeButton.Button--plain');
984993
if (button) button.click();
985994
}
986995
}
@@ -1317,7 +1326,7 @@ function questionInvitation(){
13171326
collapsedNowAnswer('.ContentLayout'); // 收起当前回答 + 快捷返回顶部
13181327
setInterval(topTime_people, 300); // 置顶显示时间
13191328
addTypeTips(); // 区分问题文章
1320-
addToQuestion(); // 直达问题按钮
1329+
addToQuestion(); // 直达问题按钮
13211330
blockUsers('topic'); // 屏蔽指定用户
13221331
blockKeywords('topic'); // 屏蔽指定关键词
13231332
}

0 commit comments

Comments
 (0)