您忽略 Safari window.matchMedia
Safari ignores window.matchMedia
我使用 window.matchMedia
条件是为了避免在移动设备中注入视频。 CanIUse 报告说 matchMedia
从 Safari 9 开始可以顺利运行(我正在测试它),但我的代码完全被忽略了:
if ( window.matchMedia("(min-width: 1025px").matches) {
console.log('match');
document.addEventListener("DOMContentLoaded", function() { initialiseMediaPlayer(); }, false);
function initialiseMediaPlayer() {
(stuff here...)
}
}
此代码在 Chrome、Chromium、Firefox、IE 和 Edge 上完美运行。
有人遇到过类似的问题吗?
问题出在格式上,奇怪的是,即使格式不正确,其他浏览器也会修复该行为。它在 1025px 之后缺少一个额外的右括号“)”。尝试:
if ( window.matchMedia('(min-width:1025px)').matches) {
console.log('match');
document.addEventListener("DOMContentLoaded", function() { initialiseMediaPlayer(); }, false);
function initialiseMediaPlayer() {
(stuff here...)
}
}
对于可能遇到类似问题的任何其他人,我发现在 safari 中您需要包括 'screen and' 以及宽度设置。其他浏览器似乎假设你在谈论屏幕宽度,但 safari 需要指定它,至少在我的情况下。所以会是这样的:
if ( window.matchMedia('screen and (min-width:1025px)').matches) {}
在这种情况下
在我的例子中,Safari 在 mediaQueryList 上使用 .addListener()
而不是 addEventListener()
。
如果有人也偶然发现了这个问题,在我的情况下,问题是 safari 在 MediaQueryList 界面上没有 .onchange
属性。
这刚刚在 Safari 14 中得到解决,但该版本相当新,因此如果您想确保向后兼容性,请使用(已弃用).addListener
。
来源:https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/onchange
我使用 window.matchMedia
条件是为了避免在移动设备中注入视频。 CanIUse 报告说 matchMedia
从 Safari 9 开始可以顺利运行(我正在测试它),但我的代码完全被忽略了:
if ( window.matchMedia("(min-width: 1025px").matches) {
console.log('match');
document.addEventListener("DOMContentLoaded", function() { initialiseMediaPlayer(); }, false);
function initialiseMediaPlayer() {
(stuff here...)
}
}
此代码在 Chrome、Chromium、Firefox、IE 和 Edge 上完美运行。
有人遇到过类似的问题吗?
问题出在格式上,奇怪的是,即使格式不正确,其他浏览器也会修复该行为。它在 1025px 之后缺少一个额外的右括号“)”。尝试:
if ( window.matchMedia('(min-width:1025px)').matches) {
console.log('match');
document.addEventListener("DOMContentLoaded", function() { initialiseMediaPlayer(); }, false);
function initialiseMediaPlayer() {
(stuff here...)
}
}
对于可能遇到类似问题的任何其他人,我发现在 safari 中您需要包括 'screen and' 以及宽度设置。其他浏览器似乎假设你在谈论屏幕宽度,但 safari 需要指定它,至少在我的情况下。所以会是这样的:
if ( window.matchMedia('screen and (min-width:1025px)').matches) {}
在这种情况下
在我的例子中,Safari 在 mediaQueryList 上使用 .addListener()
而不是 addEventListener()
。
如果有人也偶然发现了这个问题,在我的情况下,问题是 safari 在 MediaQueryList 界面上没有 .onchange
属性。
这刚刚在 Safari 14 中得到解决,但该版本相当新,因此如果您想确保向后兼容性,请使用(已弃用).addListener
。
来源:https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/onchange