2008-12-05 53 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