我一直在页面标题中为现有项目添加一些新的css(使用media =“print”)。它是顺利的(一次!)IE提供了很好的预期结果,但Firefox没有......
问题是我有一个包含 lot 字段的字段集,Firefox完全拒绝(即使在最新版本中)允许在字段集内部分页。这意味着任何不适合一页的内容都会丢失......
我发现在mozilla网站上已经确认该漏洞已经开放了3年 - https://bugzilla.mozilla.org/show_bug.cgi?id=471015 - 但找不到任何合理的解决方法......
在我想要删除字段集或类似内容之前的任何建议?
谢谢, 戴夫
答案 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>