2

我假设在“屏幕”上下文中不会加载打印样式表,但是,样式表仍在 Chrome(Windows)中加载。这是一个错误,是我绊倒了,还是我的假设不正确,“打印”不应该加载?

铬屏幕截图

这是我的html:

<head>
  <link rel="stylesheet" href="all.css" type="text/css" media="all">
  <link rel="stylesheet" href="screen.css" type="text/css" media="screen">
  <link rel="stylesheet" href="print.css" type="text/css" media="print">
</head>

使用 Chrome 24.0.1312.52 m(最新)

4

1 回答 1

4

这不是错误。当您链接到 DOM 中的样式表时,它将发出服务器请求并下载它。media=screen等是仅适用于样式表内样式的media=print条件 - 因此您将永远不会看到您的 print.css 样式应用于您的屏幕(反之亦然)。它不会阻止您的样式表被加载。现在,已知某些浏览器会在您指定时延迟加载media=print,以便您的页面先呈现,然后再加载 print.css - 但并非所有浏览器都这样做。

Crisp 的这篇博客文章解释了如何使用 javascript 延迟加载打印样式表。这使得它仅在用户需要打印时才加载,不幸的是他使用的方法(window.onbeforeprint仅在 IE 和 Firefox 中支持 - http://www.w3schools.com/tags/ev_onbeforeprint.asp)。

于 2013-01-11T06:03:59.503 回答