打印时禁用jQuery定义的样式

时间:2011-02-17 17:34:35

标签: javascript jquery css printing

我有一个页面,其中包含许多通过jQuery在文档就绪和窗口滚动上定义的功能和样式,甚至确保它在禁用JavaScript时很好地降级。然而,我只是把一个“打印”样式表放在一起,废弃了大部分样式,当我测试它时,我意识到我的jQuery方法在打印和添加回一些背景图像时正在进行。打印时是否可以禁用JavaScript或jQuery,甚至是特定功能?

最大的问题是这件作品,根据之前生成的数字生成一个随机背景图片...它覆盖了我的打印样式表调用background-image:none,即使使用!important标签:

$(document).ready(function() {
    $("body").css({backgroundImage: 'url(images/body_bg_'+background+'.jpg)'});
});

谢谢!

2 个答案:

答案 0 :(得分:3)

在样式表中定义样式。然后使用JavaScript更改DOM以使这些样式应用于元素,而不是修改样式属性。

这使您可以控制不同的媒体,并保持关注点(语义,表示和逻辑)的分离。

@media screen {
   body.something {
       background-image: url(images/body_bg_something.jpg);
   }
}

$(document).ready(function() {
    $("body").addClass('something');
}

那说:

  

它覆盖了我的打印样式表对background-image的调用:none,即使使用!important

真的不应该那样做。

答案 1 :(得分:0)

您可以打开与弹出窗口相同的页面,不带任何jquery调用/引用,然后调用页面的window.print onload。与googlemaps上的“打印”选项类似。