【问题标题】:Enquire.js + Media.match + Respond.jsEnquire.js + Media.match + Respond.js
【发布时间】:2014-02-12 20:52:40
【问题描述】:

我正在尝试让 Enquire.js 为旧版浏览器工作。我正在使用文档中的深度支持方法:

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 中失去了媒体查询支持。

让所有东西协同工作的最佳方法是什么?我曾尝试通过 Modernizr 同时加载 respond.js 和 Media.match。如果我先加载它,我会看到与以前相同的 JS 错误。如果我第二次加载它,媒体查询将不起作用。我也试过只加载 Media.match 的 INSTEAD,但 JS 错误返回。

谢谢。

编辑:

发布此消息后不久,我回滚查询 1.5.6,使用了 Respond.js、shouldDegrade 选项,并且没有进行 Modernizr 测试。 IE8/9 中没有 JS 错误,到目前为止一切似乎都运行良好。

我仍然很想知道是否有办法让它与 2.0 一起使用,或者我现在是否应该坚持使用 1.5.6?

【问题讨论】:

    标签: media-queries enquire.js respond.js


    【解决方案1】:

    我在使用 Inquire v2.0.2 时遇到了同样的问题。我的解决方法是从respond.js 中删除matchMedia 的包含,然后在加载respond.js 后加载media.match 和enquire.js。我还没有用 modernizr 测试过,但我能够获得媒体查询支持和 enquire.js 以在 IE7 和 8 中工作而没有 JS 错误。

    【讨论】:

      【解决方案2】:

      我猜实际的问题是在respond.js 中你确实有matchMedia polyfill 但没有matchMedia.addListener plugin。因此,对普通 matchMedia 的modernizr 测试成功,但随后导致您可能在查询时遇到错误(对象不支持此属性或方法)。

      我自己不希望将 respond.js 自定义为不包含 matchMedia,而只是在 respond.js 之后单独加载 matchMedia.addListener 插件。

      【讨论】:

        【解决方案3】:

        蒂姆,

        有点晚了,但你看到了吗?我想这就是你要找的东西。

        enquire.js legacy support

        【讨论】:

        • 这实际上是我开始关注以尝试解决此问题的线程。不过,我从来没有这样做过——在inquiry 2.0 中没有。我总是在一个版本的 IE 或另一个版本中遇到 JS 错误。我准备很快在另一个网站上解决这个问题,所以我可能会再试一次。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        • 2012-10-02
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多