我正在尝试让Enquire.js在遗留浏览器上工作。我使用文档中的Deep support方法:
Modernizr.load([
{
test: window.matchMedia,
nope: "media.match.min.js"
},
"enquire-2.0.0.min.js",
"plugins.js", // jquery plugins
"main.js" // enquire-triggered functions + general code
]);这样做的问题是我使用的是initializr.com的Modernizr+Respond,所以测试总是通过的。这会在IE8/9的enquire.js中触发JS错误。
通过删除respond.js并只使用普通的Modernizr,测试失败,Media.match加载,JS错误得到解决。但是,我在IE8中失去了对媒体查询的支持。
让所有东西协同工作的最好方法是什么?我已经尝试通过现代在与Media.match同时加载respond.js。如果我先加载它,我会看到和以前一样的JS错误。如果我第二次加载它,媒体查询就不起作用。我也尝试只加载它,而不是Media.match,但JS错误返回。
谢谢。
编辑:
在发布这篇文章后不久,我回滚到了enquire 1.5.6,使用了Respond.js,shouldDegrade选项,没有进行现代测试。IE8/9中没有JS错误,到目前为止一切似乎都运行得很好。
我仍然有兴趣知道是否有办法让它在2.0中工作,或者我现在是否应该坚持使用1.5.6?
发布于 2013-08-21 03:31:55
我在使用Enquire v2.0.2时遇到了同样的问题。我的解决方法是从respond.js中删除matchMedia,然后在加载respond.js之后加载media.match和enquire.js。我还没有用modernizr测试过这一点,但我能够在IE7和8中获得媒体查询支持和enquire.js,并且没有JS错误。
发布于 2014-02-12 20:52:41
我猜实际的问题是在respond.js中有matchMedia polyfill,但没有matchMedia.addListener plugin。因此,普通matchMedia的现代测试成功了,但随后会导致查询可能出现的错误(对象不支持此属性或方法)。
我自己不喜欢定制不包含matchMedia的respond.js,而只是在respond.js之后单独加载matchMedia.addListener插件。
发布于 2013-06-04 09:35:37
https://stackoverflow.com/questions/16321516
复制相似问题