|
1 | 1 | // ==UserScript== |
2 | 2 | // @name 全球主机交流论坛增强 |
3 | | -// @version 1.1.5 |
| 3 | +// @version 1.1.6 |
4 | 4 | // @author X.I.U |
5 | | -// @description 自动签到(访问空间)、屏蔽指定用户(黑名单)、自动无缝翻页、自动显示帖子内隐藏回复、自动隐藏阅读权限 255 的帖子、回到顶部(右键点击两侧空白处) |
| 5 | +// @description 自动签到(访问空间)、屏蔽用户(黑名单)、屏蔽关键词(帖子标题)、自动无缝翻页、自动显示帖子内隐藏回复、自动隐藏阅读权限 255 的帖子、回到顶部(右键点击两侧空白处) |
6 | 6 | // @match *://hostloc.com/* |
7 | 7 | // @icon https://www.hostloc.com/favicon.ico |
8 | 8 | // @grant GM_xmlhttpRequest |
|
21 | 21 | var menu_ALL = [ |
22 | 22 | ['menu_autoSignIn', '自动签到', '自动签到', true], |
23 | 23 | ['menu_reAutoSignIn', '重新签到', '重新签到', ''], |
24 | | - ['menu_blockUsers', '屏蔽指定用户', '屏蔽指定用户', false], |
| 24 | + ['menu_blockUsers', '屏蔽用户', '屏蔽用户', false], |
25 | 25 | ['menu_customBlockUsers', '自定义屏蔽用户', '自定义屏蔽用户', []], |
| 26 | + ['menu_blockKeywords', '屏蔽关键词(帖子标题)', '屏蔽关键词(帖子标题)', false], |
| 27 | + ['menu_customBlockKeywords', '自定义屏蔽关键词', '自定义屏蔽关键词', []], |
26 | 28 | ['menu_thread_pageLoading', '帖子内自动翻页', '帖子内自动翻页', true], |
27 | 29 | ['menu_showhide', '自动显示隐藏回复', '自动显示隐藏回复', true], |
28 | 30 | ['menu_delate255', '自动隐藏阅读权限 255 的帖子', '自动隐藏阅读权限 255 的帖子', true], |
|
46 | 48 | menu_ID[i] = GM_registerMenuCommand(`[ ⚑ ] ${menu_ALL[i][1]}`, function(){reAutoSignIn()}); |
47 | 49 | } else if (menu_ALL[i][0] === 'menu_customBlockUsers') { |
48 | 50 | menu_ID[i] = GM_registerMenuCommand(`[ ⚑ ] ${menu_ALL[i][1]}`, function(){customBlockUsers()}); |
| 51 | + } else if (menu_ALL[i][0] === 'menu_customBlockKeywords') { |
| 52 | + menu_ID[i] = GM_registerMenuCommand(`[ ⚑ ] ${menu_ALL[i][1]}`, function(){customBlockKeywords()}); |
49 | 53 | } else { |
50 | 54 | 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]}`)}); |
51 | 55 | } |
|
134 | 138 | if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) { // 帖子内 |
135 | 139 | if (menu_value('menu_thread_pageLoading')) { |
136 | 140 | curSite = DBSite.thread; |
137 | | - hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮 |
| 141 | + hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮 |
138 | 142 | } |
139 | | - showPosts(); // 自动显示帖子内被隐藏的回复 |
140 | | - blockUsers('thread'); |
| 143 | + showPosts(); // 自动显示帖子内被隐藏的回复 |
| 144 | + blockUsers('thread'); // 屏蔽用户(黑名单) |
141 | 145 | } else if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) { // 各板块帖子列表 |
142 | 146 | curSite = DBSite.forum; |
143 | | - if (menu_value('menu_delate255')) delate255(); // 自动隐藏阅读权限 255 的帖子 |
144 | | - blockUsers('forum'); |
145 | | - }else if (patt_guide.test(location.search)) { // 导读帖子列表 |
| 147 | + if (menu_value('menu_delate255')) { // 自动隐藏阅读权限 255 的帖子 |
| 148 | + delate255(); |
| 149 | + setTimeout(delate255, 1500); // 为了避免有时候网页加载太慢时没有隐藏成功的问题 |
| 150 | + } |
| 151 | + blockUsers('forum'); // 屏蔽用户(黑名单) |
| 152 | + blockKeywords(); // 屏蔽关键词(帖子标题) |
| 153 | + }else if (patt_guide.test(location.search)) { // 导读帖子列表 |
146 | 154 | curSite = DBSite.guide; |
147 | | - } else if(location.pathname === '/search.php') { // 搜索结果列表 |
| 155 | + } else if(location.pathname === '/search.php') { // 搜索结果列表 |
148 | 156 | curSite = DBSite.search; |
149 | | - blockUsers('search'); |
| 157 | + blockUsers('search'); // 屏蔽用户(黑名单) |
150 | 158 | } else if(location.pathname === '/home.php' && location.search.indexOf('mod=space&do=notice&view=mypost') > -1) { // 消息(帖子/点评/提到) |
151 | | - blockUsers('notice'); |
| 159 | + blockUsers('notice'); // 屏蔽用户(黑名单) |
152 | 160 | } else if(location.pathname === '/home.php' && location.search === '?mod=space&do=pm') { // 消息(私人聊天) |
153 | | - blockUsers('pm'); |
| 161 | + blockUsers('pm'); // 屏蔽用户(黑名单) |
154 | 162 | } |
155 | 163 |
|
156 | 164 | curSite.pageUrl = ""; // 下一页URL |
|
217 | 225 | }; |
218 | 226 |
|
219 | 227 |
|
220 | | - // 屏蔽指定用户 |
| 228 | + // 屏蔽用户 |
221 | 229 | function blockUsers(type) { |
222 | 230 | if (!menu_value('menu_blockUsers')) return |
223 | 231 | if (!menu_value('menu_customBlockUsers') || menu_value('menu_customBlockUsers').length < 1) return |
|
256 | 264 | } |
257 | 265 |
|
258 | 266 |
|
| 267 | + // 自定义屏蔽关键词(帖子标题) |
| 268 | + function customBlockKeywords() { |
| 269 | + let nowBlockKeywords = ''; |
| 270 | + GM_getValue('menu_customBlockKeywords').forEach(function(item){nowBlockKeywords = nowBlockKeywords + '|' + item}) |
| 271 | + let newBlockKeywords = prompt('编辑 [自定义屏蔽关键词],刷新网页后生效\n(不同关键词之间使用 "|" 分隔,\n(例如:嘿嘿|呵呵|嘎嘎,如果只有一个就不需要 "|" 了。', nowBlockKeywords.replace('|','')); |
| 272 | + if (newBlockKeywords === '') { |
| 273 | + GM_setValue('menu_customBlockKeywords', []); |
| 274 | + registerMenuCommand(); // 重新注册脚本菜单 |
| 275 | + } else if (newBlockKeywords != null) { |
| 276 | + GM_setValue('menu_customBlockKeywords', newBlockKeywords.split('|')); |
| 277 | + registerMenuCommand(); // 重新注册脚本菜单 |
| 278 | + } |
| 279 | + }; |
| 280 | + |
| 281 | + |
| 282 | + // 屏蔽关键词(帖子标题) |
| 283 | + function blockKeywords() { |
| 284 | + if (!menu_value('menu_blockKeywords')) return |
| 285 | + if (!menu_value('menu_customBlockKeywords') || menu_value('menu_customBlockKeywords').length < 1) return |
| 286 | + //console.log('1111'); |
| 287 | + let listItem = document.querySelectorAll('[id^="normalthread_"]'); |
| 288 | + //console.log(listItem); |
| 289 | + if (listItem.length < 1) return |
| 290 | + listItem.forEach(function(item){ // 遍历所有帖子标题 |
| 291 | + //console.log(item); |
| 292 | + menu_value('menu_customBlockKeywords').forEach(function(item1){ // 遍历关键词 |
| 293 | + let itemName = item.querySelector('th a.s.xst'); // 寻找帖子标题 |
| 294 | + //console.log(itemName); |
| 295 | + //console.log(item1, itemName.innerText); |
| 296 | + if (itemName && itemName.innerText.indexOf(item1) > -1) { |
| 297 | + console.log(item1, itemName.innerText); |
| 298 | + item.remove(); // 删除帖子 |
| 299 | + } |
| 300 | + }) |
| 301 | + }) |
| 302 | + } |
| 303 | + |
| 304 | + |
259 | 305 | // 自动翻页 |
260 | 306 | function pageLoading() { |
261 | 307 | if (curSite.SiteTypeID > 0){ |
|
267 | 313 | let autopbn = document.querySelector('#autopbn'); |
268 | 314 | if (autopbn && autopbn.innerText === "下一页 »"){ // 如果已经在加载中了,就忽略 |
269 | 315 | autopbn.click(); |
270 | | - if (menu_value('menu_delate255')) { // 自动隐藏阅读权限 255 的帖子 |
271 | | - let timer = setInterval(function(){ |
272 | | - if (document.querySelector('#autopbn').innerText === "下一页 »") { |
273 | | - delate255(); |
274 | | - blockUsers('forum'); |
275 | | - clearInterval(timer); |
276 | | - } |
277 | | - }, 10); |
278 | | - } |
| 316 | + let timer = setInterval(function(){ // 在下一页加载完成后 |
| 317 | + if (document.querySelector('#autopbn').innerText === "下一页 »") { |
| 318 | + if (menu_value('menu_delate255')) delate255(); // 隐藏 255 权限帖子 |
| 319 | + if (menu_value('menu_blockUsers')) blockUsers('forum'); // 屏蔽用户(黑名单) |
| 320 | + if (menu_value('menu_blockKeywords')) blockKeywords(); // 屏蔽关键词(帖子标题) |
| 321 | + clearInterval(timer); |
| 322 | + } |
| 323 | + }, 10); |
279 | 324 | } |
280 | 325 | }else{ |
281 | 326 | ShowPager.loadMorePage(); |
|
409 | 454 | pageElems.forEach(function (one) { |
410 | 455 | toElement.insertAdjacentElement(addTo, one); |
411 | 456 | }); |
412 | | - if (menu_value('menu_blockUsers')) { // 屏蔽指定用户 |
| 457 | + if (menu_value('menu_blockUsers')) { // 屏蔽用户(黑名单) |
413 | 458 | if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) { |
414 | 459 | blockUsers('thread'); |
415 | 460 | } else if (location.pathname === '/search.php') { |
|
0 commit comments