Skip to content

Commit dcd15ff

Browse files
committed
新增 [强制当前网站启用护眼模式] 功能; 新增 [对当前网站启用/禁用] 功能; 优化 脚本菜单等
1 parent 8c29d63 commit dcd15ff

1 file changed

Lines changed: 149 additions & 23 deletions

File tree

DarkMode.user.js

Lines changed: 149 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// ==UserScript==
22
// @name 护眼模式
3-
// @version 1.1.6
3+
// @version 1.2.0
44
// @author X.I.U
55
// @description 简单有效的全网通用护眼模式、夜间模式、暗黑模式
66
// @match *://*/*
@@ -26,19 +26,18 @@
2626
'use strict';
2727
(function() {
2828
var menu_ALL = [
29+
['menu_disable', '✅ 已启用 (点击对当前网站禁用)', '❎ 已禁用 (点击对当前网站启用)', []],
2930
['menu_runDuringTheDay', '白天保持开启 (比晚上亮一点点)', '白天保持开启', true],
30-
['menu_autoRecognition', '排除自带暗黑模式的网页 (beta)', '排除自带暗黑模式的网页 (beta)', true],
31+
['menu_autoRecognition', '智能排除自带暗黑模式的网页 (beta)', '智能排除自带暗黑模式的网页 (beta)', true],
32+
['menu_forcedToEnable', '✅ 已强制当前网站启用护眼模式 (👆)', '❎ 未强制当前网站启用护眼模式 (👆)', []],
3133
['menu_darkModeType', '点击切换模式', '点击切换模式', 1],
32-
['menu_customMode', '自定义当前模式', '自定义当前模式', '80|70'],
33-
['menu_customMode1', '自定义模式 1', '自定义模式 1', '80|70'],
34-
['menu_customMode2', '自定义模式 2', '自定义模式 2', '80|20|70|30'],
35-
['menu_customMode3', '自定义模式 3', '自定义模式 3', '80']
36-
], menu_ID = [], websiteList = ['rarbgprx.org','fitgirl-repacks.site','masquerade.site','www.gamersky.com'];
34+
['menu_customMode', '自定义当前模式', '自定义当前模式', true], ['menu_customMode1',,,'80|70'], ['menu_customMode2',,,'80|20|70|30'], ['menu_customMode3',,,'80']
35+
], menu_ID = [];
3736
for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值
3837
if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};
3938
}
4039
registerMenuCommand();
41-
addStyle();
40+
if (menu_ID.length > 1) {addStyle();}
4241

4342

4443
// 注册脚本菜单
@@ -50,29 +49,66 @@
5049
}
5150
for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单
5251
menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);
53-
if (menu_ALL[i][0] === 'menu_darkModeType') {
54-
if (menu_ALL[i][3] > 3){ // 避免在减少 raw 数组后,用户储存的数据大于数组而报错
52+
if (menu_ALL[i][0] === 'menu_disable')
53+
{ // 启用/禁用护眼模式 (当前网站)
54+
if (menu_disable('check')) { // 当前网站是否已存在禁用列表中
55+
menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][2]}`, function(){menu_disable('del')});
56+
return
57+
} else {
58+
menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][1]}`, function(){menu_disable('add')});
59+
}
60+
}
61+
else if (menu_ALL[i][0] === 'menu_darkModeType')
62+
{ // 点击切换模式
63+
if (menu_ALL[i][3] > 3) { // 避免在减少 raw 数组后,用户储存的数据大于数组而报错
5564
menu_ALL[i][3] = 1;
56-
GM_setValue('menu_darkModeType', menu_ALL[i][3]);
65+
GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);
5766
}
58-
menu_ID[i] = GM_registerMenuCommand(`🔄 [ ${menu_ALL[i][3]} ] ${menu_ALL[i][1]}`, function(){menu_toggle(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`)});
59-
} else if (menu_ALL[i][0] === 'menu_customMode') {
60-
GM_setValue('menu_customMode', menu_ALL[i][3]);
61-
menu_ID[i] = GM_registerMenuCommand(`✅ ${menu_ALL[i][1]}`, function(){menu_customMode()});
62-
} else if (menu_ALL[i][0] === 'menu_customMode1') {
63-
GM_setValue('menu_customMode1', menu_ALL[i][3]);
64-
} else if (menu_ALL[i][0] === 'menu_customMode2') {
65-
GM_setValue('menu_customMode2', menu_ALL[i][3]);
66-
} else if (menu_ALL[i][0] === 'menu_customMode3') {
67-
GM_setValue('menu_customMode3', menu_ALL[i][3]);
68-
} else {
69-
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]}`)});
67+
menu_ID[i] = GM_registerMenuCommand(`${menu_num(menu_ALL[i][3])} ${menu_ALL[i][1]}`, function(){menu_toggle(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`)});
68+
}
69+
else if (menu_ALL[i][0] === 'menu_customMode')
70+
{ // 自定义当前模式
71+
GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);
72+
menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_customMode()});
73+
}
74+
else if (menu_ALL[i][0] === 'menu_customMode1' || menu_ALL[i][0] === 'menu_customMode2' || menu_ALL[i][0] === 'menu_customMode3')
75+
{ // 当前模式值
76+
GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);
77+
}
78+
else if (menu_ALL[i][0] === 'menu_forcedToEnable')
79+
{ // 强制当前网站启用护眼模式
80+
if (menu_value('menu_autoRecognition')) { // 自动排除自带暗黑模式的网页 (beta)
81+
if (menu_forcedToEnable('check')) { // 当前网站是否已存在列表中
82+
menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][1]}`, function(){menu_forcedToEnable('del')});
83+
} else {
84+
menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][2]}`, function(){menu_forcedToEnable('add')});
85+
}
86+
}
87+
}
88+
else
89+
{
90+
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]}`)});
7091
}
7192
}
7293
menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412212/feedback', {active: true,insert: true,setParent: true});});
7394
}
7495

7596

97+
function menu_num(num) {
98+
switch(num) {
99+
case 1:
100+
return '1️⃣'
101+
break;
102+
case 2:
103+
return '2️⃣'
104+
break;
105+
case 3:
106+
return '3️⃣'
107+
break;
108+
}
109+
}
110+
111+
76112
// 自定义当前模式
77113
function menu_customMode() {
78114
let newMods, tip, defaults, name;
@@ -108,6 +144,94 @@
108144
}
109145

110146

147+
// 强制当前网站启用护眼模式
148+
function menu_forcedToEnable(type) {
149+
switch(type) {
150+
case 'check':
151+
if(check()) return true
152+
return false
153+
break;
154+
case 'add':
155+
add();
156+
break;
157+
case 'del':
158+
del();
159+
break;
160+
}
161+
162+
function check() { // 存在返回真,不存在返回假
163+
let websiteList = menu_value('menu_forcedToEnable'); // 读取网站列表
164+
for (let num = 0;num<websiteList.length;num++) { // 判断是否已存在
165+
if (websiteList[num] === location.host) {
166+
return true
167+
}
168+
};
169+
return false
170+
}
171+
172+
function add() {
173+
if (check()) return
174+
let websiteList = menu_value('menu_forcedToEnable'); // 读取网站列表
175+
websiteList.push(location.host); // 追加网站域名
176+
GM_setValue('menu_forcedToEnable', websiteList); // 写入配置
177+
location.reload(); // 刷新网页
178+
}
179+
180+
function del() {
181+
if (!check()) return
182+
let websiteList = menu_value('menu_forcedToEnable'), // 读取网站列表
183+
index = websiteList.indexOf(location.host);
184+
websiteList.splice(index, 1); // 删除网站域名
185+
GM_setValue('menu_forcedToEnable', websiteList); // 写入配置
186+
location.reload(); // 刷新网页
187+
}
188+
}
189+
190+
191+
// 启用/禁用护眼模式 (当前网站)
192+
function menu_disable(type) {
193+
switch(type) {
194+
case 'check':
195+
if(check()) return true
196+
return false
197+
break;
198+
case 'add':
199+
add();
200+
break;
201+
case 'del':
202+
del();
203+
break;
204+
}
205+
206+
function check() { // 存在返回真,不存在返回假
207+
let websiteList = menu_value('menu_disable'); // 读取网站列表
208+
for (let num = 0;num<websiteList.length;num++) { // 判断是否已存在
209+
if (websiteList[num] === location.host) {
210+
return true
211+
}
212+
};
213+
return false
214+
}
215+
216+
function add() {
217+
if (check()) return
218+
let websiteList = menu_value('menu_disable'); // 读取网站列表
219+
websiteList.push(location.host); // 追加网站域名
220+
GM_setValue('menu_disable', websiteList); // 写入配置
221+
location.reload(); // 刷新网页
222+
}
223+
224+
function del() {
225+
if (!check()) return
226+
let websiteList = menu_value('menu_disable'), // 读取网站列表
227+
index = websiteList.indexOf(location.host);
228+
websiteList.splice(index, 1); // 删除网站域名
229+
GM_setValue('menu_disable', websiteList); // 写入配置
230+
location.reload(); // 刷新网页
231+
}
232+
}
233+
234+
111235
// 切换暗黑模式
112236
function menu_toggle(menu_status, Name) {
113237
menu_status = parseInt(menu_status)
@@ -208,6 +332,8 @@
208332
}, 5);
209333
}
210334

335+
let websiteList = menu_value('menu_forcedToEnable'); // 强制当前网站启用护眼模式
336+
211337
// 为了避免 body 还没加载导致无法检查是否设置背景颜色
212338
let timer = setInterval(function(){ // 每 10 毫秒检查一下 body 是否已存在
213339
if (document.body) {

0 commit comments

Comments
 (0)