运行JavaScript / jQuery的只是在屏幕上的媒体,而不是打印(Run javascri

2019-06-27 07:52发布

我怎么能只运行在一个jQuery功能@media screen

背景:

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

Answer 1:

任何脚本会在页面加载时,所以使用跑出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();
    }
});


Answer 2:

在最新的浏览器可以使用matchesMedia:

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

如果你想支持旧的浏览器也可以使用像填充工具matchMedia.js



Answer 3:

我想你可以使用Modernizr的。 虽然,必须有做在JavaScript原生方式。

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

我从来没有尝试过,但它是这样的:

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

用旧的浏览器不支持媒体查询提防。



文章来源: Run javascript/jquery only on screen media, not print