即使客户端使用浏览器的打印菜单项,我发现了一种只打印IFrame内容的方法,但我不能告诉你为什么。诀窍是在打印之前将焦点设置为IFrame。打印样式表也是必需的,尽管javascript似乎是用户从菜单打印时发生的情况。你需要两部分才能工作。它打印整个文档,即使它大于IFrame!我已经在IE8,Firefox 5和6以及Safari 3.2中成功测试过它。
我使用这个脚本的处理程序onclick事件的按钮或“打印我”链接:
<script type="text/javascript" language=JavaScript>
function CheckIsIE()
{
if (navigator.appName.toUpperCase() == 'MICROSOFT INTERNET EXPLORER')
{ return true; }
else
{ return false; }
}
function PrintThisPage()
{
if (CheckIsIE() == true)
{
document.content.focus();
document.content.print();
}
else
{
window.frames['content'].focus();
window.frames['content'].print();
}
}
</script>
iframe的问题被命名id'd内容。我的按钮位于名为print_iframe的div中浏览器嗅探非常重要! 然后我用的打印样式表只有这样挂在:
<link href="/styles/print.css" rel="stylesheet" type="text/css" media="print" />
@charset "utf-8";
/* CSS Document */
body { background:none; }
#left { display:none; }
#main img { display:none; }
#banner
{
display:none;
margin-top:0px;
padding:0px;
}
#main
{
margin-top:0px;
padding:0px;
}
#print_iframe
{
display:none;
}
在我得出的结论是,iframe的是更多的麻烦比它的价值到底。我在div模式下使用colorbox,并在正在提取的页面中添加一些逻辑,以确定它是应该呈现整个HTML页面还是仅显示我感兴趣的数据。使用div来打印页面样式的问题远没有问题比使用iframe – GordonM 2010-11-05 12:59:41
[从父窗口打印动态创建的iframe的内容]的可能副本(http://stackoverflow.com/questions/831147/printing-contents-of-a-dynamically-created-iframe-from-parent -window) – 2017-03-10 01:15:38