新增 [收起预览帖子] 功能; 新增 [显示是否在线] 功能; 优化 [屏蔽阅读权限 255 帖子] 功能

This commit is contained in:
xiu2
2021-05-26 19:38:02 +08:00
parent c4b6f4f94f
commit d5289733c3
+46 -20
View File
@@ -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<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值
if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};
@@ -138,28 +140,27 @@
if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -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();