[英]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.