我正在制作一个小脚本来打印页面的一部分。我的想法是页面中有一个表格,我想将其复制到iframe和print中。问题是该表的一堆样式分散在样式表链接和<HEAD>
标记中的原始样式对象之间。
所以我有这样的事情:
...
<link to stylesheet>
<style>
#printable { font-size: 50px; }
</style>
...
</head>
<body>
Never print me.
<div id="printable">Please print only me</div>
Don't print me either
...
然后我将这个jQuery附加到一个按钮:
var printable = $('#printable');
//make an iframe that's not visible on the screen
$('<iframe name="printer" id="printer" style="width:1px;height:1px;position:absolute;left:-10000px" >'+
'<html><head></head><body>'+
'</body></html></iframe>').load(function(){
//when it loads, add the links and styles to it along with the printable div
$(this).contents().find('head')
.append($('link').clone())
.append($('<style/>',{html:$('style').html()}))
.end()
.find('body')
.append(printable.clone());
//print only the iframe
document.printer.focus();
document.printer.print();
}).appendTo(document.body);
我的投诉是附加链接和样式的业务。在Chrome中,我可以在我的追加语句中使用更简单的$('link,style').clone()
,但在IE中,似乎没有做任何事情 - 至少据我所见,样式不会进入iframe中。我之前已经看到了动态创建脚本标签的完全相同的问题,我想我正在尝试理解脚本/样式标签与其他任何东西之间的潜在差异(至少对于IE而言)。