|
1 | 1 | // ==UserScript== |
2 | 2 | // @name 护眼模式 |
3 | | -// @version 1.1.6 |
| 3 | +// @version 1.2.0 |
4 | 4 | // @author X.I.U |
5 | 5 | // @description 简单有效的全网通用护眼模式、夜间模式、暗黑模式 |
6 | 6 | // @match *://*/* |
|
26 | 26 | 'use strict'; |
27 | 27 | (function() { |
28 | 28 | var menu_ALL = [ |
| 29 | + ['menu_disable', '✅ 已启用 (点击对当前网站禁用)', '❎ 已禁用 (点击对当前网站启用)', []], |
29 | 30 | ['menu_runDuringTheDay', '白天保持开启 (比晚上亮一点点)', '白天保持开启', true], |
30 | | - ['menu_autoRecognition', '排除自带暗黑模式的网页 (beta)', '排除自带暗黑模式的网页 (beta)', true], |
| 31 | + ['menu_autoRecognition', '智能排除自带暗黑模式的网页 (beta)', '智能排除自带暗黑模式的网页 (beta)', true], |
| 32 | + ['menu_forcedToEnable', '✅ 已强制当前网站启用护眼模式 (👆)', '❎ 未强制当前网站启用护眼模式 (👆)', []], |
31 | 33 | ['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 = []; |
37 | 36 | for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值 |
38 | 37 | if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])}; |
39 | 38 | } |
40 | 39 | registerMenuCommand(); |
41 | | - addStyle(); |
| 40 | + if (menu_ID.length > 1) {addStyle();} |
42 | 41 |
|
43 | 42 |
|
44 | 43 | // 注册脚本菜单 |
|
50 | 49 | } |
51 | 50 | for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单 |
52 | 51 | 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 数组后,用户储存的数据大于数组而报错 |
55 | 64 | 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]); |
57 | 66 | } |
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]}`)}); |
70 | 91 | } |
71 | 92 | } |
72 | 93 | 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});}); |
73 | 94 | } |
74 | 95 |
|
75 | 96 |
|
| 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 | + |
76 | 112 | // 自定义当前模式 |
77 | 113 | function menu_customMode() { |
78 | 114 | let newMods, tip, defaults, name; |
|
108 | 144 | } |
109 | 145 |
|
110 | 146 |
|
| 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 | + |
111 | 235 | // 切换暗黑模式 |
112 | 236 | function menu_toggle(menu_status, Name) { |
113 | 237 | menu_status = parseInt(menu_status) |
|
208 | 332 | }, 5); |
209 | 333 | } |
210 | 334 |
|
| 335 | + let websiteList = menu_value('menu_forcedToEnable'); // 强制当前网站启用护眼模式 |
| 336 | + |
211 | 337 | // 为了避免 body 还没加载导致无法检查是否设置背景颜色 |
212 | 338 | let timer = setInterval(function(){ // 每 10 毫秒检查一下 body 是否已存在 |
213 | 339 | if (document.body) { |
|
0 commit comments