除非调整 window 大小,否则 matchMedia 不起作用
matchMedia doesnt work unless window is resized
我正在尝试使用 window.matchMedia 事件侦听器来检测用户是否在触摸设备上。但是我似乎只在 chrome DevTools window 调整大小时激活,而不是实际检测它是否是触摸设备(例如,在我的像素 3a 上)。
这是我用于事件侦听器的代码
if (matchMedia) {
let mql = window.matchMedia('(pointer: fine)');
mql.addListener(touchChange)
}
及其运行的功能
function touchChange (event) {
if (event.matches) {
touchcontrols = true;
console.log("Touch Controls");
console.log(window.innerWidth);
document.getElementById("lives").innerHTML = "Touch Events!";
}
}
如果你只是想看看它是否匹配一次你可以使用:
let matches = window.matchMedia('(pointer: fine)').matches;
window.matchMedia
returns 一个带有 matches
属性 的对象表示它当前是否与您的查询匹配,并且 addListener
用于注册回调被调用以响应媒体查询状态的变化。
更多相关信息:https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener
我正在尝试使用 window.matchMedia 事件侦听器来检测用户是否在触摸设备上。但是我似乎只在 chrome DevTools window 调整大小时激活,而不是实际检测它是否是触摸设备(例如,在我的像素 3a 上)。
这是我用于事件侦听器的代码
if (matchMedia) {
let mql = window.matchMedia('(pointer: fine)');
mql.addListener(touchChange)
}
及其运行的功能
function touchChange (event) {
if (event.matches) {
touchcontrols = true;
console.log("Touch Controls");
console.log(window.innerWidth);
document.getElementById("lives").innerHTML = "Touch Events!";
}
}
如果你只是想看看它是否匹配一次你可以使用:
let matches = window.matchMedia('(pointer: fine)').matches;
window.matchMedia
returns 一个带有 matches
属性 的对象表示它当前是否与您的查询匹配,并且 addListener
用于注册回调被调用以响应媒体查询状态的变化。
更多相关信息:https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener