javascript - Safari 浏览器中 matchMedia 的 addEventListener
问题描述
我没有浏览器iOS
,safari
所以我无法正确测试它。
这是我的代码:
if (window && window.matchMedia('(prefers-color-scheme: dark)')) {
window.matchMedia('(prefers-color-scheme: dark)')
.addEventListener('change', (mediaQuery) => {
console.log('theme', mediaQuery);
// ....
});
}
使用该代码我收到错误(在在线测试工具中):
window.matchMedia('(prefers-color-scheme: dark)').addEventListener is not a function
如何解决?
解决方案
该规范仅提及addListener
(https: //drafts.csswg.org/cssom-view/#the-mediaquerylist-interface ),这是 safari 包含的唯一功能。
这也有最广泛的支持,请参阅https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener。
所以你可能应该成为:
if (window && window.matchMedia('(prefers-color-scheme: dark)')) {
window.matchMedia('(prefers-color-scheme: dark)')
.addListener((mediaQuery) => {
console.log('theme', mediaQuery);
// ....
});
}
推荐阅读
- git - git,将一个分支推到另一个分支有什么作用?
- c# - 为什么我的 CSV 文件在上传到 Azure Blob 存储时会损坏?
- c++ - c++ 程序的未定义行为
- excel - 一旦触发按钮上的宏,工作表中的事件代码就会停止工作
- reactjs - React 脚本 86 个漏洞
- c++ - 编译显示错误,不在 C++ 范围内
- android - Android 上的 Ionic & Capacitor:“但 Cordova 不可用”
- android - Kotlin 结合了 2 个以上的流程
- android - 如何通过平滑过渡将底部工作表行为直接打开到全屏?
- tcl - 将 auto_mkindex 用于 TCL 脚本