Skip to content

Commit 1a5d134

Browse files
committed
优化 脚本菜单相关代码
1 parent 5d857dc commit 1a5d134

6 files changed

Lines changed: 209 additions & 197 deletions

3dm-Enhanced.user.js

Lines changed: 34 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -18,47 +18,34 @@
1818
// ==/UserScript==
1919

2020
(function() {
21-
var menu_thread_pageLoading = GM_getValue('xiu2_menu_thread_pageLoading'),
22-
menu_autoReply = GM_getValue('xiu2_menu_autoReply'),
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;
26-
if (menu_thread_pageLoading == null){menu_thread_pageLoading = false; GM_setValue('xiu2_menu_thread_pageLoading', menu_thread_pageLoading)};
27-
if (menu_autoReply == null){menu_autoReply = true; GM_setValue('xiu2_menu_autoReply', menu_autoReply)};
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)};
21+
var menu_ALL = [
22+
['menu_thread_pageLoading', '自动回复', '自动回复', true],
23+
['menu_autoReply', '清理置顶帖子', '清理置顶帖子', true],
24+
['menu_cleanTopPost', '帖子内自动翻页', '帖子内自动翻页', true],
25+
['menu_scrollToShowhide', '自动滚动至隐藏内容', '自动滚动至隐藏内容', true]
26+
], menu_ID = [];
27+
for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值
28+
if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};
29+
}
3030
registerMenuCommand();
3131

3232
// 注册脚本菜单
3333
function registerMenuCommand() {
34-
let menu_thread_pageLoading_, menu_autoReply_, menu_cleanTopPost_, menu_scrollToShowhide_;
35-
if (menu_feedBack_ID){ // 如果反馈菜单ID不是 null,则删除所有脚本菜单
36-
GM_unregisterMenuCommand(menu_thread_pageLoading_ID);
37-
GM_unregisterMenuCommand(menu_autoReply_ID);
38-
GM_unregisterMenuCommand(menu_cleanTopPost_ID);
39-
GM_unregisterMenuCommand(menu_scrollToShowhide_ID);
40-
GM_unregisterMenuCommand(menu_feedBack_ID);
41-
menu_thread_pageLoading = GM_getValue('xiu2_menu_thread_pageLoading');
42-
menu_autoReply = GM_getValue('xiu2_menu_autoReply');
43-
menu_cleanTopPost = GM_getValue('xiu2_menu_cleanTopPost');
44-
menu_scrollToShowhide = GM_getValue('xiu2_menu_scrollToShowhide');
34+
if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组,说明不是首次添加菜单,需要卸载所有脚本菜单
35+
for (let i=0;i<menu_ID.length;i++){
36+
GM_unregisterMenuCommand(menu_ID[i]);
37+
}
4538
}
46-
47-
if (menu_thread_pageLoading){menu_thread_pageLoading_ = "√";}else{menu_thread_pageLoading_ = "×";}
48-
if (menu_autoReply){menu_autoReply_ = "√";}else{menu_autoReply_ = "×";}
49-
if (menu_cleanTopPost){menu_cleanTopPost_ = "√";}else{menu_cleanTopPost_ = "×";}
50-
if (menu_scrollToShowhide){menu_scrollToShowhide_ = "√";}else{menu_scrollToShowhide_ = "×";}
51-
52-
menu_autoReply_ID = GM_registerMenuCommand(`[ ${menu_autoReply_} ] 自动回复`, function(){menu_switch(menu_autoReply,'xiu2_menu_autoReply','自动回复')});
53-
menu_cleanTopPost_ID = GM_registerMenuCommand(`[ ${menu_cleanTopPost_} ] 清理置顶帖子`, function(){menu_switch(menu_cleanTopPost,'xiu2_menu_cleanTopPost','清理置顶帖子')});
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','自动滚动至隐藏内容')});
56-
menu_feedBack_ID = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});
39+
for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单
40+
menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);
41+
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]}`)});
42+
}
43+
menu_ID[menu_ID.length] = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});
5744
}
5845

5946
// 菜单开关
6047
function menu_switch(menu_status, Name, Tips) {
61-
if (menu_status){
48+
if (menu_status == 'true'){
6249
GM_setValue(`${Name}`, false);
6350
GM_notification({text: `已关闭 [${Tips}] 功能\n(刷新网页后生效)`, timeout: 3500});
6451
}else{
@@ -68,6 +55,16 @@
6855
registerMenuCommand(); // 重新注册脚本菜单
6956
};
7057

58+
// 返回菜单值
59+
function menu_value(menuName) {
60+
for (let menu of menu_ALL) {
61+
if (menu[0] == menuName) {
62+
return menu[3]
63+
}
64+
}
65+
}
66+
67+
7168
// 随机回复帖子的内容
7269
var replyList = [
7370
"感谢楼主分享的内容!",
@@ -144,14 +141,14 @@
144141
// URL 判断
145142
if (patt_thread.test(location.pathname) || patt_thread_2.test(location.search)){
146143
// 帖子内
147-
if(menu_thread_pageLoading)curSite = DBSite.thread;
148-
if(menu_autoReply)autoReply(); // 如果有隐藏内容,则自动回复
144+
if(menu_value('menu_thread_pageLoading'))curSite = DBSite.thread;
145+
if(menu_value('menu_autoReply'))autoReply(); // 如果有隐藏内容,则自动回复
149146
pageLoading(); // 自动翻页
150-
if(menu_scrollToShowhide)setTimeout(function(){window.scrollTo(0,document.querySelector('.showhide').offsetTop)}, 500); // 滚动至隐藏内容
147+
if(menu_value('menu_scrollToShowhide'))setTimeout(function(){window.scrollTo(0,document.querySelector('.showhide').offsetTop)}, 500); // 滚动至隐藏内容
151148
}else if (patt_forum.test(location.pathname) || patt_forum_2.test(location.search)){
152149
// 各板块帖子列表
153150
curSite = DBSite.forum;
154-
if(menu_cleanTopPost)cleanTopPost(); // 清理置顶帖子
151+
if(menu_value('menu_cleanTopPost'))cleanTopPost(); // 清理置顶帖子
155152
pageLoading(); // 自动翻页
156153
}else if (patt_guide.test(location.search)){
157154
// 导读帖子列表
@@ -204,7 +201,7 @@
204201
if (autoreply){
205202
writeReply();
206203
// 滚动至隐藏内容
207-
if(menu_scrollToShowhide){
204+
if(menu_value('menu_scrollToShowhide')){
208205
let showhideTime=setInterval(function(){
209206
let showhide=document.querySelector('.showhide')
210207
if(showhide){

52pojie-Beautification.user.js

Lines changed: 30 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,39 +17,50 @@
1717
// ==/UserScript==
1818

1919
(function() {
20-
var menu_rule = GM_getValue('xiu2_menu_rule');
21-
var menu_rule_ID, menu_feedBack_ID;
22-
if (menu_rule == null){menu_rule = false; GM_setValue('xiu2_menu_rule', menu_rule)};
20+
var menu_ALL = [
21+
['menu_rule', '隐藏版规', '隐藏版规', false]
22+
], menu_ID = [];
23+
for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值
24+
if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};
25+
}
2326
registerMenuCommand();
2427
addStyle();
2528

2629
// 注册脚本菜单
2730
function registerMenuCommand() {
28-
let menu_rule_;
29-
if (menu_feedBack_ID){ // 如果反馈菜单ID不是 null,则删除所有脚本菜单
30-
GM_unregisterMenuCommand(menu_rule_ID);
31-
GM_unregisterMenuCommand(menu_feedBack_ID);
32-
menu_rule = GM_getValue('xiu2_menu_rule');
31+
if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组,说明不是首次添加菜单,需要卸载所有脚本菜单
32+
for (let i=0;i<menu_ID.length;i++){
33+
GM_unregisterMenuCommand(menu_ID[i]);
34+
}
3335
}
34-
35-
if (menu_rule){menu_rule_ = "√";}else{menu_rule_ = "×";}
36-
37-
menu_rule_ID = GM_registerMenuCommand(`[ ${menu_rule_} ] 隐藏版规`, function(){menu_switch(menu_rule,'xiu2_menu_rule','隐藏版规')});
38-
menu_feedBack_ID = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});
36+
for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单
37+
menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);
38+
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]}`)});
39+
}
40+
menu_ID[menu_ID.length] = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});
3941
}
4042

4143
// 菜单开关
4244
function menu_switch(menu_status, Name, Tips) {
43-
if (menu_status){
45+
if (menu_status == 'true'){
4446
GM_setValue(`${Name}`, false);
45-
GM_notification({text: `已关闭 [${Tips}] 功能\n(刷新网页后生效)`, timeout: 3000});
47+
GM_notification({text: `已关闭 [${Tips}] 功能\n(刷新网页后生效)`, timeout: 3500});
4648
}else{
4749
GM_setValue(`${Name}`, true);
48-
GM_notification({text: `已开启 [${Tips}] 功能\n(刷新网页后生效)`, timeout: 3000});
50+
GM_notification({text: `已开启 [${Tips}] 功能\n(刷新网页后生效)`, timeout: 3500});
4951
}
5052
registerMenuCommand(); // 重新注册脚本菜单
5153
};
5254

55+
// 返回菜单值
56+
function menu_value(menuName) {
57+
for (let menu of menu_ALL) {
58+
if (menu[0] == menuName) {
59+
return menu[3]
60+
}
61+
}
62+
}
63+
5364
function addStyle() {
5465
let style,
5566
style_1 = `.bml {display:none !important;}`,
@@ -131,10 +142,9 @@ textarea#fastpostmessage {
131142
color: #aaa;
132143
}`,
133144
style_Add = document.createElement('style');
134-
if (menu_rule) {
135-
style = style_1 + style_2;
136-
}else{
137-
style = style_2;
145+
style = style_2
146+
if (menu_value('menu_rule')) {
147+
style += style_1;
138148
}
139149
style_Add.innerHTML = style;
140150
document.head.appendChild(style_Add);

52pojie-Enhanced.user.js

Lines changed: 30 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// @name 吾爱破解论坛增强 - 自动签到、翻页
33
// @version 1.2.4
44
// @author X.I.U
5-
// @description 自动签到、自动无缝翻页(全站)
5+
// @description 自动签到、自动无缝翻页(全站)、屏蔽导读悬赏贴(最新发表)
66
// @match *://www.52pojie.cn/*
77
// @icon https://www.52pojie.cn/favicon.ico
88
// @grant GM_xmlhttpRequest
@@ -18,35 +18,32 @@
1818
// ==/UserScript==
1919

2020
(function() {
21-
var menu_thread_pageLoading = GM_getValue('xiu2_menu_thread_pageLoading'),
22-
menu_delateReward = GM_getValue('xiu2_menu_delateReward');
23-
var menu_feedBack_ID, menu_thread_pageLoading_ID, menu_delateReward_ID;
24-
if (menu_thread_pageLoading == null){menu_thread_pageLoading = false; GM_setValue('xiu2_menu_thread_pageLoading', menu_thread_pageLoading)};
25-
if (menu_delateReward == null){menu_delateReward = false; GM_setValue('xiu2_menu_delateReward', menu_delateReward)};
21+
var menu_ALL = [
22+
['menu_thread_pageLoading', '帖子内自动翻页', '帖子内自动翻页', true],
23+
['menu_delateReward', '屏蔽导读悬赏贴(最新发表)', '屏蔽导读悬赏贴', true]
24+
], menu_ID = [];
25+
for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值
26+
if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};
27+
}
2628
registerMenuCommand();
2729

2830
// 注册脚本菜单
2931
function registerMenuCommand() {
30-
let menu_thread_pageLoading_, menu_delateReward_;
31-
if (menu_feedBack_ID){ // 如果反馈菜单ID不是 null,则删除所有脚本菜单
32-
GM_unregisterMenuCommand(menu_thread_pageLoading_ID);
33-
GM_unregisterMenuCommand(menu_delateReward_ID);
34-
GM_unregisterMenuCommand(menu_feedBack_ID);
35-
menu_thread_pageLoading = GM_getValue('xiu2_menu_thread_pageLoading');
36-
menu_delateReward = GM_getValue('xiu2_menu_delateReward');
32+
if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组,说明不是首次添加菜单,需要卸载所有脚本菜单
33+
for (let i=0;i<menu_ID.length;i++){
34+
GM_unregisterMenuCommand(menu_ID[i]);
35+
}
3736
}
38-
39-
if (menu_thread_pageLoading){menu_thread_pageLoading_ = "√";}else{menu_thread_pageLoading_ = "×";}
40-
if (menu_delateReward){menu_delateReward_ = "√";}else{menu_delateReward_ = "×";}
41-
42-
menu_thread_pageLoading_ID = GM_registerMenuCommand(`[ ${menu_thread_pageLoading_} ] 帖子内自动翻页`, function(){menu_switch(menu_thread_pageLoading,'xiu2_menu_thread_pageLoading','帖子内自动翻页')});
43-
menu_delateReward_ID = GM_registerMenuCommand(`[ ${menu_delateReward_} ] 屏蔽悬赏贴(导读 - 最新发表)`, function(){menu_switch(menu_delateReward,'xiu2_menu_delateReward','帖子内自动翻页')});
44-
menu_feedBack_ID = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});
37+
for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单
38+
menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);
39+
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]}`)});
40+
}
41+
menu_ID[menu_ID.length] = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});
4542
}
4643

4744
// 菜单开关
4845
function menu_switch(menu_status, Name, Tips) {
49-
if (menu_status){
46+
if (menu_status == 'true'){
5047
GM_setValue(`${Name}`, false);
5148
GM_notification({text: `已关闭 [${Tips}] 功能\n(刷新网页后生效)`, title: '吾爱破解论坛增强', timeout: 3000});
5249
}else{
@@ -56,6 +53,15 @@
5653
registerMenuCommand(); // 重新注册脚本菜单
5754
};
5855

56+
// 返回菜单值
57+
function menu_value(menuName) {
58+
for (let menu of menu_ALL) {
59+
if (menu[0] == menuName) {
60+
return menu[3]
61+
}
62+
}
63+
}
64+
5965
var ShowPager;
6066
showPager();
6167
// 默认 ID 为 0
@@ -131,15 +137,15 @@
131137

132138
// URL 判断
133139
if (patt_thread.test(location.pathname) || patt_thread_2.test(location.search)){
134-
if(menu_thread_pageLoading) {
140+
if(menu_value('menu_thread_pageLoading')) {
135141
curSite = DBSite.thread; // 帖子内
136142
hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮
137143
}
138144
}else if (patt_forum.test(location.pathname) || patt_forum_2.test(location.search)){
139145
curSite = DBSite.forum; // 各板块帖子列表
140146
}else if (patt_guide.test(location.search)){
141147
curSite = DBSite.guide; // 导读帖子列表
142-
delateReward(); // 屏蔽悬赏贴(导读-最新发表)
148+
delateReward(); // 屏蔽导读悬赏贴(最新发表)
143149
}else if (patt_collection.test(location.search)){
144150
curSite = DBSite.collection; // 淘贴列表
145151
}else if(location.pathname === '/search.php'){
@@ -189,7 +195,7 @@
189195

190196
//屏蔽悬赏贴(导读-最新发表)
191197
function delateReward(){
192-
if(patt_guide_newthread.test(location.search) && menu_delateReward){
198+
if(patt_guide_newthread.test(location.search) && menu_value('menu_delateReward')){
193199
let table = document.querySelector("#threadlist > div.bm_c > table"),
194200
tbodys = table.getElementsByTagName('tbody'),
195201
arrs = [];

0 commit comments

Comments
 (0)