0

鉴于此代码:

mql = window.matchMedia("(max-width: 800px)");
mql.addListener(mqlHandler);
function mqlHandler(mql) {
  if(mql.matches) {
    alert('OK');
};

还有这个其他代码:

if(Modernizr.mq("(max-width: 800px)")) {
  alert('OK');
};

matchMedia版本按预期工作,当屏幕尺寸小于 800 像素时,它会弹出警报,无论我调整页面大小多少次,但是,当我重新加载屏幕宽度较小的页面时,第二个只会弹出警报大于 800 像素,如果在此之后调整屏幕大小,则不会显示任何警报。

我从 de Modernizr 文档中读到了这篇文章,“将根据当前状态评估最大宽度或方向查询,这可能会在以后发生变化。” 这是指这种特殊行为还是代码有问题?

4

1 回答 1

2

Modernizr.mq 不会重新评估调整大小。它仅在执行时检查。等效的代码是

window.addEventListener('resize', function() {
    if(Modernizr.mq("(max-width: 800px)")) {
      alert('OK');
    };   
}, true);
于 2014-02-04T16:59:53.963 回答