diff --git a/Zhihu-Enhanced.user.js b/Zhihu-Enhanced.user.js index ab63de4d5..046878852 100644 --- a/Zhihu-Enhanced.user.js +++ b/Zhihu-Enhanced.user.js @@ -1,3 +1,4 @@ +//? What is this thing called? // ==UserScript== // @name 知乎增强 // @name:zh-CN 知乎增强 @@ -28,6 +29,7 @@ // @homepageURL https://github.com/XIU2/UserScript // ==/UserScript== +//? What does this line do? 'use strict'; var menu_ALL = [ ['menu_defaultCollapsedAnswer', '默认收起回答', '默认收起回答', true], @@ -35,7 +37,13 @@ var menu_ALL = [ ['menu_collapsedNowAnswer', '快捷收起回答/评论 (点击两侧空白处)', '快捷收起回答/评论', true], ['menu_backToTop', '快捷回到顶部 (右键两侧空白处)', '快捷回到顶部', true], ['menu_blockUsers', '屏蔽指定用户', '屏蔽指定用户', true], - ['menu_customBlockUsers', '自定义屏蔽用户', '自定义屏蔽用户', ['故事档案局', '盐选推荐', '盐选科普', '盐选成长计划', '知乎盐选会员', '知乎盐选创作者', '盐选心理', '盐选健康必修课', '盐选奇妙物语', '盐选生活馆', '盐选职场', '盐选文学甄选', '盐选作者小管家', '盐选博物馆', '盐选点金', '盐选测评室', '盐选科技前沿', '盐选会员精品']], + ['menu_customBlockUsers', '自定义屏蔽用户', '自定义屏蔽用户', + [ + '故事档案局', '盐选推荐', '盐选科普', '盐选成长计划', '知乎盐选会员', '知乎盐选创作者', + '盐选心理', '盐选健康必修课', '盐选奇妙物语', '盐选生活馆', '盐选职场', '盐选文学甄选', + '盐选作者小管家', '盐选博物馆', '盐选点金', '盐选测评室', '盐选科技前沿', '盐选会员精品' + ] + ], ['menu_blockKeywords', '屏蔽指定关键词', '屏蔽指定关键词', true], ['menu_customBlockKeywords', '自定义屏蔽关键词', '自定义屏蔽关键词', []], ['menu_blockType', '屏蔽指定类别 (视频/文章等)', '勾选 = 屏蔽该类别的信息流', ''], @@ -50,45 +58,94 @@ var menu_ALL = [ ['menu_publishTop', '置顶显示时间', '置顶显示时间', true], ['menu_typeTips', '区分问题文章', '区分问题文章', true], ['menu_toQuestion', '直达问题按钮', '直达问题按钮', true] -], menu_ID = []; -for (let i=0;i menu_ALL.length){ // 如果菜单ID数组多于菜单数组,说明不是首次添加菜单,需要卸载所有脚本菜单 - for (let i=0;i menu_ALL.length){ + for (let i=0; i.zhihuE_SettingRoot {position: absolute;top: 50%;left: 50%;-webkit-transform: translate(-50%, -50%);-moz-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);-o-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width: auto;min-width: 400px;max-width: 600px;height: auto;min-height: 150px;max-height: 400px;color: #535353;background-color: #fff;border-radius: 3px;} -.zhihuE_SettingBackdrop_1 {position: fixed;top: 0;right: 0;bottom: 0;left: 0;z-index: 203;display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-orient: vertical;-webkit-box-direction: normal;-ms-flex-direction: column;flex-direction: column;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;overflow-x: hidden;overflow-y: auto;-webkit-transition: opacity .3s ease-out;transition: opacity .3s ease-out;} -.zhihuE_SettingBackdrop_2 {position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 0;background-color: rgba(18,18,18,.65);-webkit-transition: background-color .3s ease-out;transition: background-color .3s ease-out;} -.zhihuE_SettingRoot .zhihuE_SettingHeader {padding: 10px 20px;color: #fff;font-weight: bold;background-color: #3994ff;border-radius: 3px 3px 0 0;} -.zhihuE_SettingRoot .zhihuE_SettingMain {padding: 10px 20px;border-radius: 0 0 3px 3px;} -.zhihuE_SettingHeader span {float: right;cursor: pointer;} -.zhihuE_SettingMain input {margin: 10px 6px 10px 0;cursor: pointer;vertical-align:middle} -.zhihuE_SettingMain label {margin-right: 20px;user-select: none;cursor: pointer;vertical-align:middle} -.zhihuE_SettingMain hr {border: 0.5px solid #f4f4f4;} -[data-theme="dark"] .zhihuE_SettingRoot {color: #adbac7;background-color: #343A44;} -[data-theme="dark"] .zhihuE_SettingHeader {color: #d0d0d0;background-color: #2D333B;} -[data-theme="dark"] .zhihuE_SettingMain hr {border: 0.5px solid #2d333b;} -
-
${title}
-

${tips}


` - if (line) _br = '
' + let _br = ''; + let _html = ` + +
+
+
+
+
${title} + + + + + + +
+

${tips}


+ ` + if (line) {_br = '
'} for (let i=0; i${menu[i][1]}${_br}` @@ -127,9 +199,12 @@ function menu_setting(type, title, tips, line, menu) { _html += `${_br}` } } + _html += `
` - document.body.insertAdjacentHTML('beforeend', _html); // 插入网页末尾 - setTimeout(function() { // 延迟 100 毫秒,避免太快 + // 插入网页末尾 + document.body.insertAdjacentHTML('beforeend', _html); + // 延迟设置为 100 毫秒,防止太快 + setTimeout(function() { // 关闭按钮 点击事件 document.querySelector('.zhihuE_SettingClose').onclick = function(){this.parentElement.parentElement.parentElement.remove();document.querySelector('.zhihuE_SettingStyle').remove();} // 点击周围空白处 = 点击关闭按钮 @@ -199,6 +274,7 @@ function getCollapsedAnswerObserver() { // 默认收起回答 function defaultCollapsedAnswer() { + // Return immed if if (!menu_value('menu_defaultCollapsedAnswer')) return const observer = getCollapsedAnswerObserver(); if (location.href.indexOf('/answer/') === -1) { @@ -252,10 +328,11 @@ function collapsedAnswer() { } } - +//TODO try to "de-nest" this heavily nested function // 收起当前回答、评论(监听点击事件,点击网页两侧空白处) function collapsedNowAnswer(selectors) { - backToTop(selectors) // 快捷回到顶部 + // 快捷回到顶部 + backToTop(selectors) if (!menu_value('menu_collapsedNowAnswer')) return document.querySelector(selectors).onclick = function(event){ if (event.target == this) { @@ -379,6 +456,7 @@ function collapsedNowAnswer(selectors) { // 回到顶部(监听点击事件,鼠标右键点击网页两侧空白处) +// Mouse click white space on both sides to return to top function backToTop(selectors) { if (!menu_value('menu_backToTop')) return document.querySelector(selectors).oncontextmenu = function(event){ @@ -400,13 +478,14 @@ function isElementInViewport(el) { rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); } + //获取元素是否在可视区域(部分可见) function isElementInViewport_(el) { let rect = el.getBoundingClientRect(); return ( rect.top < (window.innerHeight || document.documentElement.clientHeight) && rect.bottom > 0 - ); +); } @@ -415,7 +494,11 @@ function customBlockUsers() { let nowBlockUsers = ''; menu_value('menu_customBlockUsers').forEach(function(item){nowBlockUsers += '|' + item}) //console.log(nowBlockUsers.replace('|','')) - let newBlockUsers = prompt('编辑 [自定义屏蔽用户]\n(不同用户名之间使用 "|" 分隔,例如:用户A|用户B|用户C )', nowBlockUsers.replace('|','')); + let newBlockUsers = prompt( + '编辑 [自定义屏蔽用户]\n(不同用户名之间使用 "|" 分隔,例如:用户A|用户B|用户C )', + nowBlockUsers.replace('|','') + ); + if (newBlockUsers === '') { GM_setValue('menu_customBlockUsers', []); registerMenuCommand(); // 重新注册脚本菜单 @@ -425,7 +508,7 @@ function customBlockUsers() { } }; - +//TODO This function looks way too big. Try to // 屏蔽指定用户 function blockUsers(type) { if (!menu_value('menu_blockUsers')) return @@ -636,6 +719,7 @@ function blockUsers(type) { } + //? 这是不是其实就是原来的屏蔽用户的一个快捷方式? // 添加屏蔽用户按钮(用户信息悬浮框中) function blockUsers_button() { const callback = (mutationsList, observer) => { @@ -729,7 +813,10 @@ function blockUsers(type) { function customBlockKeywords() { let nowBlockKeywords = ''; menu_value('menu_customBlockKeywords').forEach(function(item){nowBlockKeywords += '|' + item}) - let newBlockKeywords = prompt('编辑 [自定义屏蔽关键词]\n(不同关键词之间使用 "|" 分隔,例如:关键词A|关键词B|关键词C \n(关键词不区分大小写,支持表情如:[捂脸]|[飙泪笑]', nowBlockKeywords.replace('|','')); + let newBlockKeywords = prompt( + '编辑 [自定义屏蔽关键词]\n(不同关键词之间使用 "|" 分隔,例如:关键词A|关键词B|关键词C \n(关键词不区分大小写,支持表情如:[捂脸]|[飙泪笑]', + nowBlockKeywords.replace('|','') + ); if (newBlockKeywords === '') { GM_setValue('menu_customBlockKeywords', []); registerMenuCommand(); // 重新注册脚本菜单 @@ -739,7 +826,7 @@ function customBlockKeywords() { } }; - +//TODO This function looks too big. Try to disassemble it. // 屏蔽指定关键词 function blockKeywords(type) { if (!menu_value('menu_blockKeywords')) return @@ -1051,14 +1138,16 @@ function blockYanXuan() { function addTypeTips() { if (!menu_value('menu_typeTips')) return let style = `font-weight: bold;font-size: 13px;padding: 1px 4px 0;border-radius: 2px;display: inline-block;vertical-align: top;margin: ${(location.pathname === '/search') ? '2' : '4'}px 4px 0 0;` - document.body.appendChild(document.createElement('style')).textContent = `/* 区分问题文章 */ + document.body.appendChild(document.createElement('style')).textContent = ` + /* 区分问题文章 */ .AnswerItem .ContentItem-title a:not(.zhihu_e_toQuestion)::before {content:'问题';color: #f68b83;background-color: #f68b8333;${style}} .TopstoryQuestionAskItem .ContentItem-title a:not(.zhihu_e_toQuestion)::before {content:'问题';color: #ff5a4e;background-color: #ff5a4e33;${style}} .ZVideoItem .ContentItem-title a::before, .ZvideoItem .ContentItem-title a::before {content:'视频';color: #00BCD4;background-color: #00BCD433;${style}} -.ArticleItem .ContentItem-title a::before {content:'文章';color: #2196F3;background-color: #2196F333;${style}}`; +.ArticleItem .ContentItem-title a::before {content:'文章';color: #2196F3;background-color: #2196F333;${style}} + `; } - +//? 这个功能看起来没有什么作用呀 // 直达问题按钮 function addToQuestion() { if (!menu_value('menu_toQuestion')) return @@ -1512,4 +1601,4 @@ function questionInvitation(){ } } } -})(); \ No newline at end of file +})();