2008-12-05 56 views
1

我想在网页上的打印样式表中有替代行为。沿着线的东西:如果打印样式表生效,如何通过Javascript检测?

如果正在打印此页,不要打扰 调用SWFObject的召唤一个 瑞士法郎成立。只需保留Flash将替换的HTML 即可。

我已经尝试过将已知元素设置为屏幕存在但不适用于打印样式表的已知样式。但通过Javascript获取“风格”并不能获得计算的风格。

摘要:使用跨浏览器的方式,是否可以分辨哪个样式表有效?

回答

6

听起来好像你很迷茫,当你查看一个打印友好的页面时使用了打印样式表,但事实并非如此。在用户实际将页面发送到打印机之前,不会应用打印样式表。在这一点上,任何即将运行的JavaScript已经完成。

你想要做的是把你的SWFObject放入一个div容器中,并为打印介质设置容器风格为display:none;

1

您可以使用JavaScript访问文档中的样式表,然后检查'打印'样式表是否处于活动状态。一旦你确定哪些CSS是活动的,那么你可以管理你的内容。

getActiveStyleSheet函数将看起来是这样的:

function getActiveStyleSheet() 
{ 
    var i, a; 

    for (i = 0; (a = document.getElementsByTagName("link")[i]); i++) 
    { 
     if (a.getAttribute("rel").indexOf("style") != -1 
     && a.getAttribute("title") 
     && !a.disabled) 
      return a.getAttribute("title"); 
    } 

    return null; 
} 

你可以在这里找到代码:http://www.alistapart.com/articles/alternate/

+1

此解决方案仅...部分。没有“cookie系统”的其余部分,如http://www.alistapart.com/articles/alternate/所述,它不起作用。 – jschrab 2008-12-05 21:04:38