在firefox中打印fieldsets

时间:2011-09-07 15:36:42

标签: css firefox truncate fieldset print-css

我一直在页面标题中为现有项目添加一些新的css(使用media =“print”)。它是顺利的(一次!)IE提供了很好的预期结果,但Firefox没有......

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

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

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

谢谢, 戴夫

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:4)

正如我猜测的那样,它在最新的Nightly中仍然存在。

您可以尝试执行与IE Print Protector类似的操作(又称widely使用的html5shiv)。

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

  

要在打印时正确显示元素,请暂时显示IE Print Protector   用支持的回退元素替换HTML5元素(如div和   span)当你打印时。 IE Print Protector也创建了一个特殊的   基于现有样式的这些元素的样式表;这个   意味着您可以按链接中的元素名称安全地设置HTML5元素的样式,   styles,@ import和@media。紧接着,IE Print Protector   将原始HTML5元素还原到页面,就在您离开的位置   它。对这些元素的任何引用以及这些元素上的任何事件   将保持不变。

Firefox now supports onbeforeprint

因此,当onbeforeprint被解雇时,您可以更改fieldset的{​​{1}}或其他内容。

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

答案 2 :(得分:2)

看看我刚刚写的这个jQuery hack来解决这个问题,想想即使我有点迟了也会分享。您可以将“printEnclosure”更改为我认为的HTML标记,最后的CSS显然是可选的。

<div id="printEnclosure">
<fieldset>
<legend>TEST</legend>

Test Content goes here...
</fieldset>
</div>

<script type="text/javascript">
/* <![CDATA[ */
$(document).ready(function()
{
        var i = 0;
        $('#printEnclosure').find('fieldset').each(function()
        {
            i++;
            $(this).replaceWith('<div id="convertedfieldset'+i+'">'+$(this).html()+'</div>');
            $('div#convertedfieldset'+i).css('display','inline').css('text-align','left');
        });
});
/* ]]> */
</script>