我正在努力让Enquire.js为旧版浏览器工作。我正在使用docs中的Deep支持方法:
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 Query支持。
让一切工作在一起的最佳方法是什么?我尝试通过Modernizr与Media.match同时加载respond.js。如果我先加载它,我会看到与以前相同的JS错误。如果我加载它,媒体查询不起作用。我也试过加载Media.match的INSTEAD,但JS错误返回。
感谢。
编辑:
发布后不久,我回滚询问1.5.6,使用Respond.js,shouldDegrade选项,没有Modernizr测试。 IE8 / 9中没有JS错误,到目前为止一切似乎都运行正常。
我仍然有兴趣知道是否有办法让这个使用2.0,或者我现在应该坚持使用1.5.6?
答案 0 :(得分:4)
我遇到了与Inquire v2.0.2相同的问题。我的解决方法是从respond.js中删除matchMedia的包含,然后在加载respond.js后加载media.match和enquire.js。我还没有用modernizr测试过这个,但我能够获得媒体查询支持和enquire.js在IE7和8中工作而没有JS错误。
答案 1 :(得分:1)
我想实际的问题是,在respond.js中你确实有matchMedia polyfill但没有matchMedia.addListener plugin。因此,对于普通匹配媒体的现代化测试成功,但随后导致查询可能得到的错误(对象不支持此属性或方法)。
我自己不想自定义respond.js不包含matchMedia,而只是在respond.js之后单独加载matchMedia.addListener插件。
答案 2 :(得分:0)