2016-02-29 36 views
0

redgarding這個鏈接Printing fieldsets in firefox替換字段集,股利和反之亦然僅在Firefox打印

我有相當類似的問題。我有表格,打印效果不錯,但不是在Firefox上。

而且我的代碼看起來像

<div> 
<div> 
    <fieldset ng-disabled="!isDocumentEditable"> 
    A LOT OF Inputs (like 200) - most of them are table of checkboxes 
    And a lot of other controls 
    </fieldset> 
</div> 
</div> 

現在,如果文件是可編輯的,我想讓用戶編輯。如果不是 - 我不想 - 這很簡單。

但是......我的表格很長,並沒有進入第二頁。 所以我做了這樣的事情:

<body onbeforeprint="beforePrintForFirefox()"> 
    The whole document 
</body> 
<script> 
    function beforePrintForFirefox() { 
     var fieldset = document.getElementsByTagName('fieldset')[0]; 
     var div = document.createElement('div'); 
     div.className = "fieldset"; 
     div.innerHTML = fieldset.innerHTML; 
     fieldset.parentNode.appendChild(div); 
     fieldset.parentNode.removeChild(fieldset); 
    } 
</script > 

但是......它打破了我的整個形式 - 當我改變字段集DIV我的意思是 - 控件停止禁用 - becouse我無法設置NG-禁用分隔。

我試圖做出相同的功能:afterPrintForFirefox - 將div轉換爲fieldset - 但我不認爲這是個好主意。

下面是一個問題:如何將fieldset更改爲div僅用於打印目的 - 不是真正的HTML文檔?

編輯:div.className =「fieldset」;我的想法是將'fieldset'div與其他div隔離開來嗎?我不知道它是否是好的解決方案

回答

0

所以,這裏是我的解決方案:我已經將整個公式分割爲3個字段集,所以如果文檔變得太長,它仍然會在firefox中打印(但在3個獨立的字段 - 所以...不是很好,但可以接受)。

然後,我寫一些CSS到Firefox和印刷,如禁用一些部分,即不應該被印刷,如:

@media print { 
@-moz-document url-prefix() { 
    .disableFirefoxPrint { 
     display: none; 
    } 
} 

,我和添加.disableFirefoxPrint類格式化成問題的div。

所以,這不是最好的解決方案 - 但它的工作原理。

編輯:「onbeforeprint」解決方案是個壞主意 - 因爲它改變了我的html並破壞了它。