|
3 | 3 | // @name:zh-CN 护眼模式 |
4 | 4 | // @name:zh-TW 護眼模式 |
5 | 5 | // @name:ru Тёмный режим |
6 | | -// @version 1.5.6 |
| 6 | +// @version 1.5.7 |
7 | 7 | // @author X.I.U |
8 | 8 | // @description Simple and effective network-wide eye protection mode (night mode, dark mode, black mode) |
9 | 9 | // @description:zh-CN 简单有效的全网通用护眼模式(夜间模式、暗黑模式、深色模式) |
|
447 | 447 | style_Add2.id = 'XIU2DarkMode2'; |
448 | 448 | document.lastElementChild.appendChild(style_Add2).textContent = style_00; |
449 | 449 |
|
450 | | - } else if ((document.querySelector('head>meta[name="color-scheme"],head>link[href^="resource:"]') && window.matchMedia('(prefers-color-scheme: dark)').matches) || (document.querySelector('html[class*=dark], html[data-dark-theme*=dark], html[data-theme*=dark], html[data-color-mode*=dark], body[class*=dark]')) || (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)') || (getColorValue(document.body) > 0 && getColorValue(document.body) < 898989) || (getColorValue(document.lastElementChild) > 0 && getColorValue(document.lastElementChild) < 898989) || (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgb(0, 0, 0)')) { |
451 | | - // 如果是在资源页 且 浏览器为暗黑模式,或 html/body 元素包含 dark 标识,或底色为黑色 (等于0,0,0) 或深色 (小于 89,89,89),就停用本脚本滤镜 |
| 450 | + } else if (checkChallenge() || (document.querySelector('head>meta[name="color-scheme"],head>link[href^="resource:"]') && window.matchMedia('(prefers-color-scheme: dark)').matches) || (document.querySelector('html[class*=dark], html[data-dark-theme*=dark], html[data-theme*=dark], html[data-color-mode*=dark], body[class*=dark]')) || (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)') || (getColorValue(document.body) > 0 && getColorValue(document.body) < 898989) || (getColorValue(document.lastElementChild) > 0 && getColorValue(document.lastElementChild) < 898989) || (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgb(0, 0, 0)')) { |
| 451 | + // 如果是在 (CF CDN 的人机验证页面 且 浏览器为暗黑模式) 或 (资源页 且 浏览器为暗黑模式),或 html/body 元素包含 dark 标识,或底色为黑色 (等于0,0,0) 或深色 (小于 89,89,89),就停用本脚本滤镜 |
452 | 452 | if (menu_value('menu_autoRecognition')) { // 排除自带暗黑模式的网页 (beta) |
453 | 453 | for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜 |
454 | 454 | if (websiteList[i] === location.host) return |
|
463 | 463 | // 用来解决一些 CSS 加载缓慢的网站,可能会出现没有正确排除的问题,在没有找到更好的办法之前,先这样凑活着用 |
464 | 464 | setTimeout(function(){ |
465 | 465 | console.log('[护眼模式] html:', window.getComputedStyle(document.lastElementChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor) |
466 | | - if ((document.querySelector('head>meta[name="color-scheme"],head>link[href^="resource:"]') && window.matchMedia('(prefers-color-scheme: dark)').matches) || (document.querySelector('html[class*=dark], html[data-dark-theme*=dark], html[data-theme*=dark], html[data-color-mode*=dark], body[class*=dark]')) || (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)') || (getColorValue(document.body) > 0 && getColorValue(document.body) < 898989) || (getColorValue(document.lastElementChild) > 0 && getColorValue(document.lastElementChild) < 898989) || (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgb(0, 0, 0)')) { |
467 | | - // 如果是在资源页 且 浏览器为暗黑模式,或 html/body 元素包含 dark 标识,或底色为黑色 (等于0,0,0) 或深色 (小于 89,89,89),就停用本脚本滤镜 |
| 466 | + if (checkChallenge() || (document.querySelector('head>meta[name="color-scheme"],head>link[href^="resource:"]') && window.matchMedia('(prefers-color-scheme: dark)').matches) || (document.querySelector('html[class*=dark], html[data-dark-theme*=dark], html[data-theme*=dark], html[data-color-mode*=dark], body[class*=dark]')) || (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)') || (getColorValue(document.body) > 0 && getColorValue(document.body) < 898989) || (getColorValue(document.lastElementChild) > 0 && getColorValue(document.lastElementChild) < 898989) || (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgb(0, 0, 0)')) { |
| 467 | + // 如果是在 (CF CDN 的人机验证页面 且 浏览器为暗黑模式) 或 (资源页 且 浏览器为暗黑模式),或 html/body 元素包含 dark 标识,或底色为黑色 (等于0,0,0) 或深色 (小于 89,89,89),就停用本脚本滤镜 |
468 | 468 | if (menu_value('menu_autoRecognition')) { // 排除自带暗黑模式的网页 (beta) |
469 | 469 | for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜 |
470 | 470 | if (websiteList[i] === location.host) return |
|
490 | 490 | } |
491 | 491 | } |
492 | 492 |
|
| 493 | + // Cloudflare CDN 的人机验证界面特殊处理 |
| 494 | + function checkChallenge() { |
| 495 | + return (window.matchMedia('(prefers-color-scheme: dark)').matches && document.querySelector('body>script[data-cf-beacon]')) |
| 496 | + } |
| 497 | + |
493 | 498 | // 获取背景颜色值 |
494 | 499 | function getColorValue(e) { |
495 | 500 | let rgbValueArry = window.getComputedStyle(e).backgroundColor.replace(/rgba|rgb|\(|\)| /g, '').split (',') |
|
0 commit comments