33// @name :zh-CN 护眼模式
44// @name :zh-TW 護眼模式
55// @name :en Dark Mode
6- // @version 1.4.1
6+ // @version 1.4.2
77// @author X.I.U
88// @description 简单有效的全网通用护眼模式(夜间模式、暗黑模式、深色模式)
99// @description :zh-CN 简单有效的全网通用护眼模式(夜间模式、暗黑模式、深色模式)
3535 [ 'menu_forcedToEnable' , '✅ 已强制当前网站启用护眼模式 (👆)' , '❌ 未强制当前网站启用护眼模式 (👆)' , [ ] ] ,
3636 [ 'menu_darkModeType' , '点击切换模式' , '点击切换模式' , 2 ] ,
3737 [ 'menu_customMode' , '自定义当前模式' , '自定义当前模式' , true ] , [ 'menu_customMode1' , , , '80|70' ] , [ 'menu_customMode2' , , , '80|20|70|30' ] , [ 'menu_customMode3' , , , '90' ] , [ 'menu_customMode3_exclude' , , , 'img, .img, video, [style*="background"][style*="url"], svg' ] ,
38- [ 'menu_customTime' , '自定义昼夜时间' , '自定义昼夜时间' , '6|18' ] ,
38+ [ 'menu_customTime' , '自定义昼夜时间' , '自定义昼夜时间' , '6:00 |18:00 ' ] ,
3939 [ 'menu_autoSwitch' , '晚上自动切换模式' , '晚上自动切换模式' , '' ] ,
4040 ] , menu_ID = [ ] ;
4141 for ( let i = 0 ; i < menu_ALL . length ; i ++ ) { // 如果读取到的值为 null 就写入默认值
4242 if ( GM_getValue ( menu_ALL [ i ] [ 0 ] ) == null ) { GM_setValue ( menu_ALL [ i ] [ 0 ] , menu_ALL [ i ] [ 3 ] ) } ;
4343 }
4444 registerMenuCommand ( ) ;
45+
46+ // 自定义昼夜时间 过渡性调整(精确到分钟),过段时间移除
47+ if ( GM_getValue ( 'menu_customTime' , '' ) . indexOf ( ':' ) === - 1 ) GM_setValue ( 'menu_customTime' , GM_getValue ( 'menu_customTime' , '6|18' ) . replace ( '|' , ':00|' ) + ':00' )
48+
4549 if ( menu_ID . length > 1 ) { addStyle ( ) ; }
4650
4751
141145 function getAutoSwitch ( ) {
142146 let darkModeType = GM_getValue ( 'menu_darkModeType' ) , hours = new Date ( ) . getHours ( ) , time = GM_getValue ( 'menu_customTime' ) . split ( '|' ) . map ( Number ) ;
143147 if ( GM_getValue ( 'menu_autoSwitch' ) != '' ) { // 晚上自动切换模式
144- if ( hours > time [ 0 ] && hours < time [ 1 ] ) { // 白天
148+ if ( isDaytime ( ) ) { // 白天
145149 darkModeType = GM_getValue ( 'menu_autoSwitch' ) . split ( '|' ) [ 0 ] ;
146150 } else { // 晚上
147151 darkModeType = GM_getValue ( 'menu_autoSwitch' ) . split ( '|' ) [ 1 ] ;
201205
202206 // 自定义昼夜时间
203207 function menu_customTime ( ) {
204- let newMods = prompt ( '自定义脚本内和白天/晚上相关的时间,修改后刷新网页生效~\n格式:6|18 (即 6:00 ~ 18:00 之间是白天时间)' , GM_getValue ( 'menu_customTime' ) ) ;
208+ let newMods = prompt ( '自定义脚本内和白天/晚上相关的时间,修改后刷新网页生效~\n格式:6:01 |18:30 (即 6:01 ~ 18:30 之间是白天时间)' , GM_getValue ( 'menu_customTime' ) ) ;
205209 if ( newMods === '' ) {
206- GM_setValue ( 'menu_customTime' , '6|18' ) ;
210+ GM_setValue ( 'menu_customTime' , '6:00 |18:00 ' ) ;
207211 registerMenuCommand ( ) ; // 重新注册脚本菜单
208212 } else if ( newMods != null ) {
209213 GM_setValue ( 'menu_customTime' , newMods ) ;
340344 function addStyle ( ) {
341345 let remove = false , style_Add = document . createElement ( 'style' ) ,
342346 hours = new Date ( ) . getHours ( ) ,
343- time = GM_getValue ( 'menu_customTime' ) . split ( '|' ) . map ( Number ) ,
344347 style_10 = menu_value ( 'menu_customMode1' ) . split ( '|' ) ,
345348 style_20 = menu_value ( 'menu_customMode2' ) . split ( '|' ) ,
346349 style_30 = menu_value ( 'menu_customMode3' ) . split ( '|' ) ,
371374 }
372375
373376 // 白天
374- if ( hours > time [ 0 ] && hours < time [ 1 ] ) {
377+ if ( isDaytime ( ) ) {
375378 if ( menu_value ( 'menu_runDuringTheDay' ) ) {
376379 style_12 = style_11
377380 style_22 = style_21
477480 let rgbValueArry = window . getComputedStyle ( e ) . backgroundColor . replace ( / r g b a | r g b | \( | \) | / g, '' ) . split ( ',' )
478481 return parseInt ( rgbValueArry [ 0 ] + rgbValueArry [ 1 ] + rgbValueArry [ 2 ] )
479482 }
483+
484+
485+ // 判断当前是白天还是晚上
486+ function isDaytime ( ) {
487+ let nowTime = new Date ( '2022-03-07 ' + new Date ( ) . getHours ( ) + ':' + new Date ( ) . getMinutes ( ) + ':00' ) . getTime ( ) / 1000 , time = GM_getValue ( 'menu_customTime' ) . split ( '|' ) ;
488+ time [ 0 ] = new Date ( '2022-03-07 ' + time [ 0 ] + ':00' ) . getTime ( ) / 1000 ;
489+ time [ 1 ] = new Date ( '2022-03-07 ' + time [ 1 ] + ':00' ) . getTime ( ) / 1000 ;
490+
491+ if ( nowTime > time [ 0 ] && nowTime < time [ 1 ] ) return true
492+ return false
493+ }
480494} ) ( ) ;
0 commit comments