|
1 | 1 | // ==UserScript== |
2 | 2 | // @name 3DM论坛增强 |
3 | | -// @version 1.0.5 |
| 3 | +// @version 1.0.6 |
4 | 4 | // @author X.I.U |
5 | | -// @description 自动回复、自动无缝翻页、清理置顶帖子 |
| 5 | +// @description 自动回复、自动无缝翻页、清理置顶帖子 |
6 | 6 | // @match *://bbs.3dmgame.com/* |
7 | 7 | // @icon https://bbs.3dmgame.com/favicon.ico |
8 | 8 | // @grant GM_xmlhttpRequest |
|
20 | 20 | (function() { |
21 | 21 | var menu_thread_pageLoading = GM_getValue('xiu2_menu_thread_pageLoading'), |
22 | 22 | menu_autoReply = GM_getValue('xiu2_menu_autoReply'), |
23 | | - menu_cleanTopPost = GM_getValue('xiu2_menu_cleanTopPost'); |
24 | | - var menu_thread_pageLoading_ID, menu_autoReply_ID, menu_cleanTopPost_ID, menu_feedBack_ID; |
| 23 | + menu_cleanTopPost = GM_getValue('xiu2_menu_cleanTopPost'), |
| 24 | + menu_scrollToShowhide = GM_getValue('xiu2_menu_scrollToShowhide'); |
| 25 | + var menu_thread_pageLoading_ID, menu_autoReply_ID, menu_cleanTopPost_ID, menu_scrollToShowhide_ID, menu_feedBack_ID; |
25 | 26 | if (menu_thread_pageLoading == null){menu_thread_pageLoading = false; GM_setValue('xiu2_menu_thread_pageLoading', menu_thread_pageLoading)}; |
26 | 27 | if (menu_autoReply == null){menu_autoReply = true; GM_setValue('xiu2_menu_autoReply', menu_autoReply)}; |
27 | 28 | if (menu_cleanTopPost == null){menu_cleanTopPost = true; GM_setValue('xiu2_menu_cleanTopPost', menu_cleanTopPost)}; |
| 29 | + if (menu_scrollToShowhide == null){menu_scrollToShowhide = true; GM_setValue('xiu2_menu_scrollToShowhide', menu_scrollToShowhide)}; |
28 | 30 | registerMenuCommand(); |
29 | 31 |
|
30 | 32 | // 注册脚本菜单 |
31 | 33 | function registerMenuCommand() { |
32 | | - var menu_thread_pageLoading_, menu_autoReply_, menu_cleanTopPost_; |
| 34 | + let menu_thread_pageLoading_, menu_autoReply_, menu_cleanTopPost_, menu_scrollToShowhide_; |
33 | 35 | if (menu_feedBack_ID){ // 如果反馈菜单ID不是 null,则删除所有脚本菜单 |
34 | 36 | GM_unregisterMenuCommand(menu_thread_pageLoading_ID); |
35 | 37 | GM_unregisterMenuCommand(menu_autoReply_ID); |
36 | 38 | GM_unregisterMenuCommand(menu_cleanTopPost_ID); |
| 39 | + GM_unregisterMenuCommand(menu_scrollToShowhide_ID); |
37 | 40 | GM_unregisterMenuCommand(menu_feedBack_ID); |
38 | 41 | menu_thread_pageLoading = GM_getValue('xiu2_menu_thread_pageLoading'); |
39 | 42 | menu_autoReply = GM_getValue('xiu2_menu_autoReply'); |
40 | 43 | menu_cleanTopPost = GM_getValue('xiu2_menu_cleanTopPost'); |
| 44 | + menu_scrollToShowhide = GM_getValue('xiu2_menu_scrollToShowhide'); |
41 | 45 | } |
42 | 46 |
|
43 | 47 | if (menu_thread_pageLoading){menu_thread_pageLoading_ = "√";}else{menu_thread_pageLoading_ = "×";} |
44 | 48 | if (menu_autoReply){menu_autoReply_ = "√";}else{menu_autoReply_ = "×";} |
45 | 49 | if (menu_cleanTopPost){menu_cleanTopPost_ = "√";}else{menu_cleanTopPost_ = "×";} |
| 50 | + if (menu_scrollToShowhide){menu_scrollToShowhide_ = "√";}else{menu_scrollToShowhide_ = "×";} |
46 | 51 |
|
47 | 52 | menu_autoReply_ID = GM_registerMenuCommand(`[ ${menu_autoReply_} ] 自动回复`, function(){menu_switch(menu_autoReply,'xiu2_menu_autoReply','自动回复')}); |
48 | 53 | menu_cleanTopPost_ID = GM_registerMenuCommand(`[ ${menu_cleanTopPost_} ] 清理置顶帖子`, function(){menu_switch(menu_cleanTopPost,'xiu2_menu_cleanTopPost','清理置顶帖子')}); |
49 | 54 | menu_thread_pageLoading_ID = GM_registerMenuCommand(`[ ${menu_thread_pageLoading_} ] 帖子内自动翻页`, function(){menu_switch(menu_thread_pageLoading,'xiu2_menu_thread_pageLoading','帖子内自动翻页')}); |
| 55 | + menu_scrollToShowhide_ID = GM_registerMenuCommand(`[ ${menu_scrollToShowhide_} ] 自动滚动至隐藏内容`, function(){menu_switch(menu_scrollToShowhide,'xiu2_menu_scrollToShowhide','自动滚动至隐藏内容')}); |
50 | 56 | menu_feedBack_ID = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});}); |
51 | 57 | } |
52 | 58 |
|
|
127 | 133 | curSite.pageUrl = ""; |
128 | 134 |
|
129 | 135 | // URL 匹配正则表达式 |
130 | | - var patt_thread = /\/thread-\d+-\d+\-\d+.html/, |
| 136 | + let patt_thread = /\/thread-\d+-\d+\-\d+.html/, |
131 | 137 | patt_thread_2 = /mod\=viewthread/, |
132 | 138 | patt_forum = /\/forum-\d+-\d+\.html/, |
133 | 139 | patt_forum_2 = /mod\=forumdisplay/, |
|
141 | 147 | if(menu_thread_pageLoading)curSite = DBSite.thread; |
142 | 148 | if(menu_autoReply)autoReply(); // 如果有隐藏内容,则自动回复 |
143 | 149 | pageLoading(); // 自动翻页 |
| 150 | + if(menu_scrollToShowhide)setTimeout(`window.scrollTo(0,document.querySelector('.showhide').offsetTop)`, 500); // 滚动至隐藏内容 |
144 | 151 | }else if (patt_forum.test(location.pathname) || patt_forum_2.test(location.search)){ |
145 | 152 | // 各板块帖子列表 |
146 | 153 | curSite = DBSite.forum; |
|
155 | 162 |
|
156 | 163 | // 判断是否登陆 |
157 | 164 | function checkLogin(){ |
158 | | - var checklogin = document.querySelectorAll('.wp.h_menu p a'); |
| 165 | + let checklogin = document.querySelectorAll('.wp.h_menu p a'); |
159 | 166 | if (checklogin){ |
160 | | - for (var value of checklogin) { |
| 167 | + for (let value of checklogin) { |
161 | 168 | if (value.innerHTML == "退出"){ |
162 | 169 | loginStatus = true; |
163 | 170 | } |
|
171 | 178 | if (curSite.SiteTypeID > 0){ |
172 | 179 | windowScroll(function (direction, e) { |
173 | 180 | if (direction === "down") { // 下滑才准备翻页 |
174 | | - var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; |
| 181 | + let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop; |
175 | 182 | let scrollDelta = 666; |
176 | 183 | if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + scrollDelta) { |
177 | 184 | if (curSite.SiteTypeID === SiteType.FORUM) { // 如果是各版块帖子列表则直接点下一页就行了 |
178 | | - var autopbn = document.querySelector('#autopbn'); |
| 185 | + let autopbn = document.querySelector('#autopbn'); |
179 | 186 | if (autopbn && autopbn.innerText == "下一页 »"){ // 如果已经在加载中了,就忽略 |
180 | 187 | autopbn.click(); |
181 | 188 | } |
|
193 | 200 | function autoReply(){ |
194 | 201 | if (loginStatus){ |
195 | 202 | // 存在隐藏内容,则自动回复 |
196 | | - var autoreply = document.querySelector('.locked a'); |
| 203 | + let autoreply = document.querySelector('.locked a'); |
197 | 204 | if (autoreply){ |
198 | 205 | writeReply(); |
199 | | - setTimeout(`window.scrollTo(0,0)`, 1000); |
| 206 | + // 滚动至隐藏内容 |
| 207 | + if(menu_scrollToShowhide){ |
| 208 | + let showhideTime=setInterval(function(){ |
| 209 | + let showhide=document.querySelector('.showhide') |
| 210 | + if(showhide){ |
| 211 | + clearInterval(showhideTime) |
| 212 | + window.scrollTo(0,showhide.offsetTop) |
| 213 | + }}, 100) |
| 214 | + }else{ |
| 215 | + setTimeout(`window.scrollTo(0,0)`, 1000); |
| 216 | + } |
200 | 217 | } |
201 | 218 | } |
202 | 219 |
|
|
205 | 222 |
|
206 | 223 | // 写入自动回复内容 |
207 | 224 | function writeReply(){ |
208 | | - var textarea = document.getElementById("fastpostmessage"); |
| 225 | + let textarea = document.getElementById("fastpostmessage"); |
209 | 226 | if (textarea){ |
210 | 227 | textarea.value = textarea.value + replyList[Math.floor((Math.random()*replyList.length))] + replyList[Math.floor((Math.random()*replyList.length))]; |
211 | | - var fastpostsubmit = document.getElementById("fastpostsubmit"); |
| 228 | + let fastpostsubmit = document.getElementById("fastpostsubmit"); |
212 | 229 | if (fastpostsubmit){ |
213 | 230 | fastpostsubmit.click(); |
214 | 231 | } |
|
218 | 235 |
|
219 | 236 | // 清理置顶帖子 |
220 | 237 | function cleanTopPost(){ |
221 | | - var showhide = document.querySelectorAll("a.showhide.y"); |
| 238 | + let showhide = document.querySelectorAll("a.showhide.y"); |
222 | 239 | if (showhide.length > 0){ |
223 | 240 | showhide.forEach(el=>el.click()); |
224 | 241 | } |
|
0 commit comments