mirror of
https://github.com/jerryc127/hexo-theme-butterfly.git
synced 2026-04-16 20:30:53 +08:00
57 lines
2.3 KiB
Plaintext
57 lines
2.3 KiB
Plaintext
script.
|
|
var activateDarkMode = function () {
|
|
document.documentElement.setAttribute('data-theme', 'dark')
|
|
if (document.querySelector('meta[name="theme-color"]') !== null) {
|
|
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#000')
|
|
}
|
|
}
|
|
var activateLightMode = function () {
|
|
document.documentElement.setAttribute('data-theme', 'light')
|
|
if (document.querySelector('meta[name="theme-color"]') !== null) {
|
|
document.querySelector('meta[name="theme-color"]').setAttribute('content', '#fff')
|
|
}
|
|
}
|
|
|
|
var getCookies = function (name) {
|
|
const value = `; ${document.cookie}`
|
|
const parts = value.split(`; ${name}=`)
|
|
if (parts.length === 2) return parts.pop().split(';').shift()
|
|
}
|
|
|
|
var autoChangeMode = '#{theme.darkmode.autoChangeMode}'
|
|
var t = getCookies('theme')
|
|
if (autoChangeMode === '1') {
|
|
var isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
var isLightMode = window.matchMedia('(prefers-color-scheme: light)').matches
|
|
var isNotSpecified = window.matchMedia('(prefers-color-scheme: no-preference)').matches
|
|
var hasNoSupport = !isDarkMode && !isLightMode && !isNotSpecified
|
|
|
|
if (t === undefined) {
|
|
if (isLightMode) activateLightMode()
|
|
else if (isDarkMode) activateDarkMode()
|
|
else if (isNotSpecified || hasNoSupport) {
|
|
console.log('You specified no preference for a color scheme or your browser does not support it. I Schedule dark mode during night time.')
|
|
var now = new Date()
|
|
var hour = now.getHours()
|
|
var isNight = hour <= 6 || hour >= 18
|
|
isNight ? activateDarkMode() : activateLightMode()
|
|
}
|
|
window.matchMedia('(prefers-color-scheme: dark)').addListener(function (e) {
|
|
if (Cookies.get('theme') === undefined) {
|
|
e.matches ? activateDarkMode() : activateLightMode()
|
|
}
|
|
})
|
|
} else if (t === 'light') activateLightMode()
|
|
else activateDarkMode()
|
|
} else if (autoChangeMode === '2') {
|
|
now = new Date()
|
|
hour = now.getHours()
|
|
isNight = hour <= 6 || hour >= 18
|
|
if (t === undefined) isNight ? activateDarkMode() : activateLightMode()
|
|
else if (t === 'light') activateLightMode()
|
|
else activateDarkMode()
|
|
} else {
|
|
if (t === 'dark') activateDarkMode()
|
|
else if (t === 'light') activateLightMode()
|
|
}
|