|
1 | 1 | // ==UserScript== |
2 | 2 | // @name 护眼模式 |
3 | | -// @version 1.2.5 |
| 3 | +// @version 1.2.6 |
4 | 4 | // @author X.I.U |
5 | 5 | // @description 简单有效的全网通用护眼模式、夜间模式、暗黑模式 |
6 | 6 | // @match *://*/* |
|
29 | 29 | var menu_ALL = [ |
30 | 30 | ['menu_disable', '✅ 已启用 (点击对当前网站禁用)', '❌ 已禁用 (点击对当前网站启用)', []], |
31 | 31 | ['menu_runDuringTheDay', '白天保持开启 (比晚上亮一点点)', '白天保持开启', true], |
| 32 | + ['menu_darkModeAuto', '护眼模式跟随浏览器', '护眼模式跟随浏览器', false], |
32 | 33 | ['menu_autoRecognition', '智能排除自带暗黑模式的网页 (beta)', '智能排除自带暗黑模式的网页 (beta)', true], |
33 | 34 | ['menu_forcedToEnable', '✅ 已强制当前网站启用护眼模式 (👆)', '❌ 未强制当前网站启用护眼模式 (👆)', []], |
34 | 35 | ['menu_darkModeType', '点击切换模式', '点击切换模式', 1], |
|
56 | 57 | menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][2]}`, function(){menu_disable('del')}); |
57 | 58 | return |
58 | 59 | } else { |
| 60 | + if (GM_getValue('menu_darkModeAuto') && !window.matchMedia('(prefers-color-scheme: dark)').matches) { |
| 61 | + menu_ID[i] = GM_registerMenuCommand(`❌ 当前浏览器为白天模式 (点击关闭 [护眼模式跟随浏览器])`, function(){GM_setValue('menu_darkModeAuto', false);location.reload();}); |
| 62 | + return |
| 63 | + } |
59 | 64 | menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][1]}`, function(){menu_disable('add')}); |
60 | 65 | } |
61 | 66 | } |
|
327 | 332 | // 为了避免 body 还没加载导致无法检查是否设置背景颜色 |
328 | 333 | let timer = setInterval(function(){ // 每 5 毫秒检查一下 body 是否已存在 |
329 | 334 | if (document.body) { |
330 | | - clearInterval(timer); // 取消定时器(每 10 毫秒一次的) |
| 335 | + clearInterval(timer); // 取消定时器(每 5 毫秒一次的) |
331 | 336 | setTimeout(function(){ // 为了避免太快 body 的 CSS 还没加载上,先延迟 150 毫秒(缺点就是可能会出现短暂一闪而过的暗黑滤镜) |
332 | | - console.log('html:', window.getComputedStyle(document.lastChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
| 337 | + console.log('[护眼模式] html:', window.getComputedStyle(document.lastChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
333 | 338 | if (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastChild).backgroundColor === 'rgba(0, 0, 0, 0)') { |
334 | 339 | // 如果 body 没有 CSS 背景颜色,那就需要添加一个背景颜色,否则影响滤镜效果 |
335 | 340 | let style_Add2 = document.createElement('style'); |
|
341 | 346 | for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜 |
342 | 347 | if (websiteList[i] === location.host) return |
343 | 348 | } |
344 | | - console.log('检测到当前网页自带暗黑模式,停用本脚本滤镜...') |
| 349 | + console.log('[护眼模式] 检测到当前网页自带暗黑模式,停用本脚本滤镜...') |
345 | 350 | document.getElementById('XIU2DarkMode').remove(); |
346 | 351 | remove = true; |
347 | 352 | } |
|
350 | 355 |
|
351 | 356 | // 用来解决一些 CSS 加载缓慢的网站,可能会出现没有正确排除的问题,在没有找到更好的办法之前,先这样凑活着用 |
352 | 357 | setTimeout(function(){ |
353 | | - console.log('html:', window.getComputedStyle(document.lastChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
| 358 | + console.log('[护眼模式] html:', window.getComputedStyle(document.lastChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
354 | 359 | if (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)' || getColorValue(document.body) > 0 && getColorValue(document.body) < 898989 || getColorValue(document.lastChild) > 0 && getColorValue(document.lastChild) < 898989 || window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastChild).backgroundColor === 'rgb(0, 0, 0)') { |
355 | 360 | // 如果是黑色 (等于0,0,0) 或深色 (小于 89,89,89),就停用本脚本滤镜 |
356 | 361 | if (menu_value('menu_autoRecognition')) { // 排除自带暗黑模式的网页 (beta) |
357 | 362 | for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜 |
358 | 363 | if (websiteList[i] === location.host) return |
359 | 364 | } |
360 | 365 | if (remove) return |
361 | | - console.log('检测到当前网页自带暗黑模式,停用本脚本滤镜...') |
| 366 | + console.log('[护眼模式] 检测到当前网页自带暗黑模式,停用本脚本滤镜...') |
362 | 367 | if (document.getElementById('XIU2DarkMode')) document.getElementById('XIU2DarkMode').remove(); |
363 | 368 | if (document.getElementById('XIU2DarkMode2')) document.getElementById('XIU2DarkMode2').remove(); |
364 | 369 | } |
|
369 | 374 |
|
370 | 375 | // 用来解决一些 CSS 加载缓慢的网站,可能会出现没有正确排除的问题,在没有找到更好的办法之前,先这样凑活着用 |
371 | 376 | /*setTimeout(function(){ |
372 | | - console.log('html:', window.getComputedStyle(document.lastChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
| 377 | + console.log('[护眼模式] html:', window.getComputedStyle(document.lastChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
373 | 378 | if (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)' || getColorValue(document.body) > 0 && getColorValue(document.body) < 898989 || getColorValue(document.lastChild) > 0 && getColorValue(document.lastChild) < 898989) { |
374 | 379 | // 如果是黑色 (等于0,0,0) 或深色 (小于 89,89,89),就停用本脚本滤镜 |
375 | 380 | if (menu_value('menu_autoRecognition')) { // 排除自带暗黑模式的网页 (beta) |
376 | 381 | for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜 |
377 | 382 | if (websiteList[i] === location.host) return |
378 | 383 | } |
379 | 384 | if (remove) return |
380 | | - console.log('检测到当前网页自带暗黑模式,停用本脚本滤镜...') |
| 385 | + console.log('[护眼模式] 检测到当前网页自带暗黑模式,停用本脚本滤镜...') |
381 | 386 | if (document.getElementById('XIU2DarkMode')) document.getElementById('XIU2DarkMode').remove(); |
382 | 387 | if (document.getElementById('XIU2DarkMode2')) document.getElementById('XIU2DarkMode2').remove(); |
383 | 388 | } |
|
0 commit comments