google-chrome - 检测浏览器是否使用暗模式并使用不同的网站图标
解决方案
head
在 Firefox 但不是 Safari 中从文档作品中添加和删除图标:
Chrome 仍在实施(prefers-color-scheme: dark)
,所以陪审团还在外面。https://crbug.com/889087。在 Chrome 76 with 中--enable-blink-features=MediaQueryPrefersColorScheme
,这会在页面加载时正确设置图标,但不会动态响应暗模式的变化。
Safari 在深色模式下(例如Wikimedia Foundation、Github)为深色图标添加了灰色背景,因此对于易读性而言,此解决方法不是必需的。
稍后添加两个
link rel=icon
带有 s 的元素:id
<link rel="icon" href="a.png" id="light-scheme-icon"> <link rel="icon" href="b.png" id="dark-scheme-icon">
创建一个 CSS 媒体匹配器:
matcher = window.matchMedia('(prefers-color-scheme: dark)'); matcher.addListener(onUpdate); onUpdate();
从文档中添加/删除元素
head
:lightSchemeIcon = document.querySelector('link#light-scheme-icon'); darkSchemeIcon = document.querySelector('link#dark-scheme-icon'); function onUpdate() { if (matcher.matches) { lightSchemeIcon.remove(); document.head.append(darkSchemeIcon); } else { document.head.append(lightSchemeIcon); darkSchemeIcon.remove(); } }
推荐阅读
- bootstrap-4 - Funkyradio 按钮在动态创建时不起作用
- ethereum - 中间件未解决 test binance provider 中的 ExtraDataLengthError,导致未知帐户
- python - Plotly 图形对象非常慢
- python - Django - 编写一个在所有测试用例之前运行一次的测试函数
- python - Python安装目录
- android - 无法使 ScrollView 在弹出窗口中填充整个父级
- r - 使用 R 中的“for”循环将列值子集到单独的向量中
- css - ruby rails动态css类
- javascript - Angular - 重新加载页面时调用了两次构造函数和 ngOninit()
- pandas - str.split(',', expand = True) 太……慢了,如何提升性能?