可能听起来很奇怪,但我正在寻找一种简单的方法来测试any
浏览器是否支持媒体查询。
我知道有respondjs,它带有一个window.matchMedia polyfill ,但即使使用它,我仍然需要查询特定的查询,例如:
window.matchMedia("all and (min-width: 400px"));
它返回一个obj.matches = true/false
.
我正在寻找的是一种通用的测试方法,“是否支持 mediaQueries”,是或否。
我目前正在使用:
window.matchMedia("screen and (orienation:landscape),
screen and (orientation:portrait)");
但我真的不喜欢这种测试方式。
我也试过:
window.matchMedia("all");
但这(当然)true
在使用 polyfill 时会在 IE8 中返回matchMedia
。另外,我不能自己测试matchMedia
,因为我会错过很多支持媒体查询的浏览器,但不支持window.matchMedia
(caniuse)。
问题:
有没有一种简单的方法来测试媒体查询支持?如果可能的话,我根本不想使用window.matchMedia
它来做到这一点。
编辑:
我还检查了Modernizr,它还测试了特定的 mediaQuery 条件(mq):
testMediaQuery = function( mq ) {
var matchMedia = window.matchMedia || window.msMatchMedia;
if ( matchMedia ) {
return matchMedia(mq).matches;
}
var bool;
injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
bool = (window.getComputedStyle ?
getComputedStyle(node, null) :
node.currentStyle)['position'] == 'absolute';
});
return bool;
},
因此,如果支持 mediaQueries,则没有通用测试。