在firefox中打印fieldsets

Dav*_*ave 12 css firefox truncate fieldset print-css

我一直在页面标题中为现有项目添加一些新的CSS(使用media ="print").它是顺利的(一次!)IE给出了很好的预期结果,但Firefox不...

问题是我有一个包含很多字段的字段集,Firefox完全拒绝(即使在最新版本中)允许在字段集内部进行分页.这意味着任何不适合一页的东西都会丢失......

我已经在mozilla网站上发现了已经开放3年的错误 - https://bugzilla.mozilla.org/show_bug.cgi?id=471015 - 但找不到任何合理的解决方法......

在我想删除字段集或类似之前的任何建议?

谢谢,戴夫

Luk*_*uda 7

我的FF JQuery解决方案:

<script type='text/javascript'>
    $(window).bind('beforeprint', function(){
        $('fieldset').each(
            function(item)
            {
                $(this).replaceWith($('<div class="fieldset">' + this.innerHTML + '</div>'));
            }
        )
    });
    $(window).bind('afterprint', function(){
        $('.fieldset').each(
            function(item)
            {
                $(this).replaceWith($('<fieldset>' + this.innerHTML + '</fieldset>'));
            }
        )
    });
</script>
Run Code Online (Sandbox Code Playgroud)


thi*_*dot 4

正如我所猜测的,在最新的Nightly中它仍然被破坏。

您可以尝试执行类似于IE Print Protector(又名广泛使用的html5shiv)的操作。

http://www.iecss.com/print-protector/#how-it-works

为了在打印中正确显示元素,IE Print Protector 在打印时会暂时将 HTML5 元素替换为受支持的后备元素(例如 div 和 span)。IE Print Protector 还会根据您现有的样式为这些元素创建一个特殊的样式表;这意味着您可以通过链接、样式、@imports 和 @media 中的元素名称安全地设置 HTML5 元素的样式。之后,IE Print Protector 会立即将原始 HTML5 元素恢复到页面中您离开的位置。对这些元素的任何引用以及这些元素上的任何事件都将保持不变。

火狐现在支持 onbeforeprint.

因此,当onbeforeprint被触发时,您可以将fieldsets 更改为divs 或其他内容。

我不确定这有多可行,而且听起来确实很复杂。