javascript - 互联网浏览器 : How to modify CSS at runtime for printing?

标签 javascript html css browser cross-browser

想象一个网页,它允许用户在运行时使用 javascript 修改 css CSS 样式来显示隐藏元素。

做出决定后(包括修改样式表),用户将使用浏览器的打印功能。

如果原始 CSS 定义位于外部文件中,Internet Explorer 似乎不会考虑打印期间在样式表中所做的更改。 在其他浏览器中,一切都按预期工作。

请看下面的示例,该示例在运行时将样式类从其初始定义 display:none 更改为 display:inline,因此将显示该元素。 但打印此页面时,该元素在 Internet Explorer 中仍然隐藏(使用 IE 6,7,8 进行测试)。

您有解决方案或解决方法吗?

简约示例(html 文件):

<html><head>
<LINK rel="stylesheet" type="text/css" href="minimal.css">
</head><body onload="displayCol();">
<script>
function displayCol()
{
     var myrules;
     if( document.styleSheets[0].cssRules ) {
              myrules = document.styleSheets[0].cssRules;

     } else {
        if ( document.styleSheets[0].rules ) {
            myrules = document.styleSheets[0].rules;
            }
        }
      myrules[0].style.display = "inline";  
}
</script>

<div class="col0" id="test">This is hidden by default.</div></body></html>

最小.css

.col0 {
  display:none;
}

更新:

请注意,是否应显示对象的决定是由用户做出的 - 在运行时是未知的!

最佳答案

您是否考虑过使用 media=print 方式让浏览器使用专门用于打印的样式表?

<link rel="stylesheet" href="print.css" media="print" />

如果您所做的 css 更改始终相同,即您可以在技术上将它们存储在单独的 css 文件中,那么您可以使用它。

对于非静态 CSS,在 IE 中(不确定其他浏览器/更高版本的 IE),可以考虑使用 onbeforeprint 事件。

请参见此处:http://www.javascriptkit.com/javatutors/ie5print.shtml

关于javascript - 互联网浏览器 : How to modify CSS at runtime for printing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094305/

相关文章:

python - 使用 Mechanize/ Selenium 抓取网站时缺少 html 中的内容

javascript - 在浅色和深色主题之间切换

javascript - 在显示 :block 之后隐藏 "shot"

javascript - 设置 Overflow=visible 时如何为 div 赋予不透明度

javascript - Angularfire:从 Controller 中的 $firebaseObject 获取嵌套数据

javascript - 获取类型错误 : cannot call getNumber method of undefined

html - (HTML + CSS) 知道 em 的精确距离

javascript - Sails 套接字不会重新连接

javascript - 打印出 api 回调时得到未定义/无结果

html - 为什么我的包装器 (div) 没有显示?