8

我试图找出让 enquire.js 在旧版浏览器(即 6-9)上工作的最佳方法。在 enquire 的网站上,它说使用modernizr 检查matchMedia 支持,如果不支持则加载polyfill。

Modernizr.load([
    //first test need for polyfill
    {
        test: window.matchMedia,
        nope: "/path/to/polyfill.js"
    },

    //and then load enquire
    "/path/to/enquire.js"
]);

查看它建议的 polyfill,它说modernizr 已经将它包含在 Modernizr.mq() 中。

    Used in:
    Respond.js
    FormFactor
    Modernizr
https://github.com/paulirish/matchMedia.js/

我已经对此进行了调查,但找不到使这项工作正常进行的方法。

4

1 回答 1

20

在这里咨询作者!

所以对于 matchMedia polyfill 总是有一些困惑。它不会将 CSS3 媒体查询支持填充到旧版浏览器中。它的作用是为那些支持 CSS3 媒体查询但不提供此 API 的浏览器填充 matchMedia javascript API。有关matchMedia 的支持,请参见此处。例如,IE9 支持 CSS3 媒体查询,但没有 matchMedia JS API,这是 Paul Irish 的 matchMedia polyfill 的目标。

如果您正在寻找一个功能齐全的 polyfill,它可以为旧版浏览器提供不错的媒体查询支持,我可以建议使用 David Knight 的媒体匹配吗?我与他一起测试了这一点,并证明了对 IE6 的支持——它很有魅力:) 你可以在这里找到:https ://github.com/weblinc/media-match 。您可以完全按照我对 Modernizr 的建议有条件地加载它,只需更换适当的部件。

希望对您有所帮助,很高兴回答您的任何其他问题。

于 2013-01-18T16:47:45.420 回答