2016-02-29 22 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并破坏了它。