簡體   English   中英

僅在firefox中打印時,將fieldset替換為div,反之亦然

[英]Replace fieldset to div and vice-versa only for printing 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 >

但是...它破壞了我的整體形式-我的意思是當我將fieldset更改為div-控件停止被禁用-因為我無法將ng-disabled設置為div。

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

這是一個問題:如何將字段集更改為僅用於打印目的div-而不是真正的HTML文檔?

編輯:div.className =“ fieldset”; 我的想法是將“ fieldset” div與其他div隔離。 我不確定這是否是很好的解決方案

因此,這是我的解決方案:我已將整個公式拆分為3個字段集,因此,如果文檔過長,則仍將其打印在Firefox中(但將打印在3個單獨的字段上,所以...不太好但可以接受)。

然后,我寫了一些css到firefox並打印,例如禁用了某些不應打印的部分,例如:

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

我通過添加.disableFirefoxPrint類來格式化有問題的div。

因此,這不是最佳解決方案-但它可以工作。

編輯:“ onbeforeprint”解決方案是一個壞主意-因為它改變了我的HTML並打破了它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM