10

如何仅在 上运行 jquery 函数@media screen

背景:

我有一个screen.css样式表和一个print.css样式表。我有两个 javascript 函数,其中一个我不想在页面的打印版本上运行

4

3 回答 3

9

任何脚本都会在页面加载时运行,因此使用是毫无意义的,因为它会在您打开if (Modernizr.mq('only screen')) {$('h1').text('media screen');}运行您的脚本。@media screen

相反,您必须检测媒体查询何时更改,并相应地更改页面。你可以使用类似enquire.js的东西来轻松地做到这一点:

// This is just an example, be more creative!

enquire.register("screen", {
    match: function() { 
        $('#only-show-on-screen').show();
    },
    unmatch: function() {
        $('#only-show-on-screen').hide();
    }
});
于 2013-02-14T17:43:59.970 回答
5

在最新的浏览器中,您可以使用 matchMedia:

if (window.matchMedia("screen").matches) {
    ....
}

如果你也想支持旧版浏览器,你可以使用像 matchMedia.js 这样的polyfill

于 2012-08-24T15:28:38.697 回答
0

我认为您可以使用 Modernizr。虽然,在 javascript 中必须有一种本地方式来做到这一点。

http://modernizr.com/docs/#mq

我从未尝试过,但它是这样的:

if (Modernizr.mq('only screen'))
{
..
}

请注意不支持媒体查询的旧浏览器。

于 2012-08-24T15:32:57.830 回答