要回答你的直接问题,你没有做错任何事。 JS正在做它应该做的事情。
trld有2个事件触发,但只有一个包含匹配的媒体查询。
发生什么事情是,当浏览器遇到断点时有2个事件被记录。作为一个例子,让我们考虑一下浏览器从1250px降到1150px的情况。当窗口的宽度为1199px时,您的功能:
Object.keys(config.mediaQueries).map((key) =>{
config.mediaQueries[key].addListener(function(event){
console.log("breakpoint change");
});
});
将记录2个事件。如果您深入了解并记录事件:
Object.keys(config.mediaQueries).map((key) =>{
config.mediaQueries[key].addListener(function(event){
console.log(event);
});
});
您会看到关于媒体查询的更多信息。我将事件对象煮到下面的重要道具。
// First event
matches: true
media: "(max-width: 1199px) and (min-width: 992px)"
// Second event
matches: false
media: "(min-width: 1200px)"
这里发生了什么是2个事件正在被记录,但只有一个事件包含匹配查询。
所以,如果我们想提高你的脚本日志记录,您可以检查matches
属性:
Object.keys(config.mediaQueries).map((key) =>{
config.mediaQueries[key].addListener(function(event){
if (event.matches) {
console.log(event);
}
});
});
有了这个小变化只有匹配的媒体查询将被记录。
太棒了。谢谢你的帮助。 –