0

我正在尝试使用 window.matchMedia 事件侦听器来检测用户是否在触摸设备上。但我似乎只是在调整 chrome DevTools 窗口大小时才激活,而不是实际检测它是否是触摸设备(例如,在我的像素 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!";
}

}

4

1 回答 1

1

如果您只想查看它是否匹配,您可以使用:

let matches = window.matchMedia('(pointer: fine)').matches;

window.matchMedia返回一个具有matches属性的对象,该属性指示它当前是否与您的查询匹配,并addListener注册一个回调,该回调将被调用以响应媒体查询状态的变化。

更多信息:https ://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener

于 2020-08-23T16:29:13.177 回答