diff --git a/Hostloc-Enhanced.user.js b/Hostloc-Enhanced.user.js index 03c14eb..8c3d183 100644 --- a/Hostloc-Enhanced.user.js +++ b/Hostloc-Enhanced.user.js @@ -1,8 +1,8 @@ // ==UserScript== // @name 全球主机交流论坛增强 -// @version 1.1.7 +// @version 1.1.8 // @author X.I.U -// @description 自动签到(访问空间)、屏蔽用户(黑名单)、屏蔽关键词(帖子标题)、自动无缝翻页、自动显示帖子内隐藏回复、自动隐藏阅读权限 255 的帖子、回到顶部(右键点击两侧空白处) +// @description 自动签到(访问空间)、屏蔽用户(黑名单)、屏蔽关键词(帖子标题)、自动无缝翻页、自动显示帖子内隐藏回复、自动隐藏阅读权限 255 的帖子、快捷回到顶部(右键点击两侧空白处)、收起预览帖子(左键点击两侧空白处) // @match *://hostloc.com/* // @icon https://www.hostloc.com/favicon.ico // @grant GM_xmlhttpRequest @@ -26,9 +26,11 @@ ['menu_blockKeywords', '屏蔽关键词(帖子标题)', '屏蔽关键词(帖子标题)', false], ['menu_customBlockKeywords', '自定义屏蔽关键词', '自定义屏蔽关键词', []], ['menu_thread_pageLoading', '帖子内自动翻页', '帖子内自动翻页', true], - ['menu_showhide', '自动显示隐藏回复', '自动显示隐藏回复', true], - ['menu_delate255', '自动隐藏阅读权限 255 的帖子', '自动隐藏阅读权限 255 的帖子', true], - ['menu_backToTop', '回到顶部(右键点击两侧空白处)', '回到顶部', true] + ['menu_showhide', '显示隐藏回复', '显示隐藏回复', true], + ['menu_backToTop', '快捷回到顶部(右键点击两侧空白处)', '快捷回到顶部', true], + ['menu_collapsedNowPost', '收起预览帖子(左键点击两侧空白处)', '收起预览帖子', true], + ['menu_onlineStatus', '显示是否在线', '显示是否在线', true], + ['menu_delate255', '屏蔽阅读权限 255 帖子', '屏蔽阅读权限 255 帖子', true] ], menu_ID = []; for (let i=0;i -1) { // 帖子内 if (menu_value('menu_thread_pageLoading')) { curSite = DBSite.thread; - hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮 + hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮 } - showPosts(); // 自动显示帖子内被隐藏的回复 - blockUsers('thread'); // 屏蔽用户(黑名单) + showPosts(); // 自动显示帖子内被隐藏的回复 + blockUsers('thread'); // 屏蔽用户(黑名单) + if (menu_value('menu_onlineStatus')) onlineStatus(); // 显示是否在线 } else if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) { // 各板块帖子列表 curSite = DBSite.forum; - if (menu_value('menu_delate255')) { // 自动隐藏阅读权限 255 的帖子 - delate255(); - setTimeout(delate255, 2000); // 为了避免有时候网页加载太慢时没有隐藏成功的问题 - } - blockUsers('forum'); // 屏蔽用户(黑名单) - blockKeywords(); // 屏蔽关键词(帖子标题) + if (menu_value('menu_collapsedNowPost')) collapsedNowPost(); // 收起当前帖子预览(左键左右两侧空白处) + if (menu_value('menu_delate255')) delate255(); // 自动隐藏阅读权限 255 的帖子 + blockUsers('forum'); // 屏蔽用户(黑名单) + blockKeywords(); // 屏蔽关键词(帖子标题) if (patt_forum.test(location.pathname)) blockDOMNodeInserted(); // 监听插入事件(针对的是:有新的回复主题,点击查看) - }else if (patt_guide.test(location.search)) { // 导读帖子列表 + }else if (patt_guide.test(location.search)) { // 导读帖子列表 curSite = DBSite.guide; - } else if(location.pathname === '/search.php') { // 搜索结果列表 + } else if(location.pathname === '/search.php') { // 搜索结果列表 curSite = DBSite.search; - blockUsers('search'); // 屏蔽用户(黑名单) + blockUsers('search'); // 屏蔽用户(黑名单) } else if(location.pathname === '/home.php' && location.search.indexOf('mod=space&do=notice&view=mypost') > -1) { // 消息(帖子/点评/提到) - blockUsers('notice'); // 屏蔽用户(黑名单) + blockUsers('notice'); // 屏蔽用户(黑名单) } else if(location.pathname === '/home.php' && location.search === '?mod=space&do=pm') { // 消息(私人聊天) - blockUsers('pm'); // 屏蔽用户(黑名单) + blockUsers('pm'); // 屏蔽用户(黑名单) } curSite.pageUrl = ""; // 下一页URL @@ -168,6 +169,18 @@ if(menu_value('menu_autoSignIn'))autoSignIn(); // 自动签到(访问空间 10 次 = 20 积分) + // 显示在线状态 + function onlineStatus() { + document.querySelectorAll('[id^="favatar"]').forEach(function(item){ // 遍历所有帖子 + let icon = (item.querySelector('[id^="userinfo"] > .i.y em').innerText === '当前在线') ? '🌝' : '🌚'; + let divStatus = document.createElement('div'); + divStatus.style = 'position: absolute;margin: -8px 0 0 8px;padding: 0 1px 1.2px;background-color: #ffffff;border-radius: 50%;'; + divStatus.innerText = icon; + let mochu = item.querySelector('.avatar'); + mochu.parentNode.insertBefore(divStatus,mochu); + }) + } + // 自动签到(访问空间 10 次 = 20 积分) function autoSignIn() { if (!loginStatus) return @@ -372,10 +385,23 @@ } + // 收起当前帖子预览(左键左右两侧空白处) + function collapsedNowPost() { + //if (!menu_value('menu_collapsedNowAnswer')) return + document.body.onclick = function(event){ + if (event.target==this) { + document.querySelectorAll('[id^="threadPreviewTR_"] .showhide').forEach(function (el) { + el.click() + }); + } + } + } + + // 自动隐藏阅读权限 255 的帖子 function delate255() { if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1){ - let tbody = document.querySelectorAll('tbody[id^="normalthread_"] .common .xw1'); + let tbody = document.querySelectorAll('tbody[id^="normalthread_"] .xw1'); Array.from(tbody).forEach(function (_this) { if (_this.innerText === '255') { _this.parentNode.parentNode.parentNode.remove();