如何仅在@media screen
上运行jquery函数?
背景:
我有一个screen.css
样式表和一个print.css
样式表。我有两个javascript函数,其中一个我不想在打印版本上运行想要页面。
答案 0 :(得分: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();
}
});
答案 1 :(得分:4)
在最新的浏览器中,您可以使用matchesMedia:
if (window.matchMedia("screen").matches) {
....
}
如果您也想支持旧版浏览器,可以使用matchMedia.js
之类的polyfill答案 2 :(得分:0)
我认为你可以使用Modernizr。虽然,必须有一种本地方式来在javascript中完成它。
我从未尝试过,但它是这样的:
if (Modernizr.mq('only screen'))
{
..
}
请注意不支持媒体查询的旧浏览器。