11// ==UserScript==
22// @name 知乎增强
3- // @version 1.3.7
3+ // @version 1.3.8
44// @author X.I.U
55// @description 移除登录弹窗、一键收起回答、收起当前回答/评论(点击两侧空白处)、快捷回到顶部(右键两侧空白处)、屏蔽指定用户、屏蔽盐选内容、置顶显示时间、显示问题时间、区分问题文章、默认高清原图、默认站外直链
66// @match *://www.zhihu.com/*
@@ -21,13 +21,14 @@ var menu_ALL = [
2121 [ 'menu_collapsedAnswer' , '一键收起回答' , '一键收起回答' , true ] ,
2222 [ 'menu_collapsedNowAnswer' , '收起当前回答/评论(点击两侧空白处)' , '收起当前回答/评论' , true ] ,
2323 [ 'menu_backToTop' , '快捷回到顶部(右键两侧空白处)' , '快捷回到顶部' , true ] ,
24- [ 'menu_blockUsers' , '屏蔽指定用户(测试)' , '屏蔽指定用户' , false ] ,
24+ [ 'menu_blockUsers' , '屏蔽指定用户' , '屏蔽指定用户' , false ] ,
25+ [ 'menu_customBlockUsers' , '自定义屏蔽用户' , '自定义屏蔽用户' , [ '故事档案局' , '盐选推荐' , '盐选科普' , '盐选成长计划' , '知乎盐选会员' , '知乎盐选创作者' , '盐选心理' , '盐选健康必修课' , '盐选奇妙物语' , '盐选生活馆' , '盐选职场' , '盐选文学甄选' , '盐选作者小管家' , '盐选博物馆' , '盐选点金' , '盐选测评室' , '盐选科技前沿' , '盐选会员精品' ] ] ,
2526 [ 'menu_blockYanXuan' , '屏蔽盐选内容' , '屏蔽盐选内容' , false ] ,
2627 [ 'menu_publishTop' , '置顶显示时间' , '置顶显示时间' , true ] ,
2728 [ 'menu_allTime' , '完整显示时间' , '完整显示时间' , true ] ,
2829 [ 'menu_typeTips' , '区分问题文章' , '区分问题文章' , true ] ,
2930 [ 'menu_directLink' , '默认站外直链' , '默认站外直链' , true ]
30- ] , menu_ID = [ ] , blockUsersList = [ '故事档案局' , '盐选推荐' , '盐选科普' , '盐选成长计划' , '知乎盐选会员' , '知乎盐选创作者' , '盐选心理' , '盐选健康必修课' , '盐选奇妙物语' , '盐选生活馆' , '盐选职场' , '盐选文学甄选' , '盐选作者小管家' , '盐选博物馆' , '盐选点金' , '盐选测评室' , '盐选科技前沿' , '盐选会员精品' ] ;
31+ ] , menu_ID = [ ] ;
3132for ( let i = 0 ; i < menu_ALL . length ; i ++ ) { // 如果读取到的值为 null 就写入默认值
3233 if ( GM_getValue ( menu_ALL [ i ] [ 0 ] ) == null ) { GM_setValue ( menu_ALL [ i ] [ 0 ] , menu_ALL [ i ] [ 3 ] ) } ;
3334}
@@ -42,7 +43,11 @@ function registerMenuCommand() {
4243 }
4344 for ( let i = 0 ; i < menu_ALL . length ; i ++ ) { // 循环注册脚本菜单
4445 menu_ALL [ i ] [ 3 ] = GM_getValue ( menu_ALL [ i ] [ 0 ] ) ;
45- menu_ID [ i ] = GM_registerMenuCommand ( `[ ${ menu_ALL [ i ] [ 3 ] ?'√' :'×' } ] ${ menu_ALL [ i ] [ 1 ] } ` , function ( ) { menu_switch ( `${ menu_ALL [ i ] [ 3 ] } ` , `${ menu_ALL [ i ] [ 0 ] } ` , `${ menu_ALL [ i ] [ 2 ] } ` ) } ) ;
46+ if ( menu_ALL [ i ] [ 0 ] === 'menu_customBlockUsers' ) {
47+ menu_ID [ i ] = GM_registerMenuCommand ( `[ ⚑ ] ${ menu_ALL [ i ] [ 1 ] } ` , function ( ) { customBlockUsers ( ) } ) ;
48+ } else {
49+ menu_ID [ i ] = GM_registerMenuCommand ( `[ ${ menu_ALL [ i ] [ 3 ] ?'√' :'×' } ] ${ menu_ALL [ i ] [ 1 ] } ` , function ( ) { menu_switch ( `${ menu_ALL [ i ] [ 3 ] } ` , `${ menu_ALL [ i ] [ 0 ] } ` , `${ menu_ALL [ i ] [ 2 ] } ` ) } ) ;
50+ }
4651 }
4752 menu_ID [ menu_ID . length ] = GM_registerMenuCommand ( '反馈 & 建议' , function ( ) { window . GM_openInTab ( 'https://github.com/XIU2/UserScript#xiu2userscript' , { active : true , insert : true , setParent : true } ) ; window . GM_openInTab ( 'https://greasyfork.org/zh-CN/scripts/419081/feedback' , { active : true , insert : true , setParent : true } ) ; } ) ;
4853}
@@ -187,7 +192,19 @@ function isElementInViewport(el) {
187192}
188193
189194
190- // 屏蔽指定用户(测试)
195+ // 自定义屏蔽用户
196+ function customBlockUsers ( ) {
197+ let nowBlockUsers = '' ;
198+ menu_value ( 'menu_customBlockUsers' ) . forEach ( function ( item ) { nowBlockUsers = nowBlockUsers + '|' + item } )
199+ let newBlockUsers = prompt ( '编辑 [自定义屏蔽用户]\n(不同用户名之间使用 "|" 分隔,例如:用户A|用户B|用户C )' , nowBlockUsers . replace ( '|' , '' ) ) ;
200+ if ( newBlockUsers != null ) {
201+ GM_setValue ( 'menu_customBlockUsers' , newBlockUsers . split ( '|' ) ) ;
202+ registerMenuCommand ( ) ; // 重新注册脚本菜单
203+ }
204+ } ;
205+
206+
207+ // 屏蔽指定用户
191208function blockUsers ( type ) {
192209 if ( ! menu_value ( 'menu_blockUsers' ) ) return
193210 switch ( type ) {
@@ -207,7 +224,7 @@ function blockUsers(type) {
207224 if ( e . target . innerHTML && e . target . getElementsByClassName ( 'Feed' ) . length > 0 ) {
208225 let item = e . target . getElementsByClassName ( 'Feed' ) [ 0 ] . getElementsByClassName ( 'ContentItem AnswerItem' ) [ 0 ] ; // 用户名所在元素
209226 if ( item ) {
210- blockUsersList . forEach ( function ( item1 ) { // 遍历用户黑名单
227+ menu_value ( 'menu_customBlockUsers' ) . forEach ( function ( item1 ) { // 遍历用户黑名单
211228 if ( item . dataset . zop . indexOf ( 'authorName":"' + item1 + '",' ) > - 1 ) { // 找到就删除该信息流
212229 console . log ( item . dataset . zop ) ;
213230 item . parentNode . parentNode . remove ( ) ;
@@ -222,7 +239,7 @@ function blockUsers(type) {
222239 Array . from ( listItem ) . forEach ( function ( item ) { // 遍历所有回答
223240 let listName = item . querySelector ( '.ContentItem.AnswerItem' ) // 用户名所在元素
224241 if ( listName ) {
225- blockUsersList . forEach ( function ( item1 ) { // 遍历用户黑名单
242+ menu_value ( 'menu_customBlockUsers' ) . forEach ( function ( item1 ) { // 遍历用户黑名单
226243 if ( listName . dataset . zop . indexOf ( 'authorName":"' + item1 + '",' ) > - 1 ) { // 找到就删除该信息流
227244 console . log ( listName . dataset . zop ) ;
228245 item . remove ( ) ;
@@ -237,7 +254,7 @@ function blockUsers(type) {
237254 if ( e . target . innerHTML && e . target . getElementsByClassName ( 'ContentItem AnswerItem' ) . length > 0 ) {
238255 let item = e . target . getElementsByClassName ( 'ContentItem AnswerItem' ) [ 0 ] ; // 用户名所在元素
239256 if ( item ) {
240- blockUsersList . forEach ( function ( item1 ) { // 遍历用户黑名单
257+ menu_value ( 'menu_customBlockUsers' ) . forEach ( function ( item1 ) { // 遍历用户黑名单
241258 if ( item . dataset . zop . indexOf ( 'authorName":"' + item1 + '",' ) > - 1 ) { // 找到就删除该回答
242259 console . log ( item . dataset . zop )
243260 item . parentNode . remove ( ) ;
@@ -251,7 +268,7 @@ function blockUsers(type) {
251268 let listItem = document . getElementsByClassName ( 'ContentItem AnswerItem' ) ;
252269 Array . from ( listItem ) . forEach ( function ( item ) { // 遍历所有回答 // 用户名所在元素
253270 if ( item ) {
254- blockUsersList . forEach ( function ( item1 ) { // 遍历用户黑名单
271+ menu_value ( 'menu_customBlockUsers' ) . forEach ( function ( item1 ) { // 遍历用户黑名单
255272 if ( item . dataset . zop . indexOf ( 'authorName":"' + item1 + '",' ) > - 1 ) { // 找到就删除该回答
256273 console . log ( item . dataset . zop )
257274 item . parentNode . remove ( ) ;
0 commit comments