这是对此问题的跟进:Invoking javascript in iframe from parent page
我已经实现了@Tomalak提供的答案。
这是jsFiddle
问题在于,iframe
中的内容是动态创建的(因此没有跨域问题)。在内容中是一个按钮,其onclick
事件处理程序调用{{1}}。这仅打印window.print()
的内容(这是好的,并作为概念证明)。
此外,父页面上有一个按钮,用于调用iframe
发布的公共函数。该函数为iframe
,与printContent
按钮的iframe
事件处理程序类似,它也会调用onclick
。
这是问题,当使用IE 8从父页面上的按钮打印时,也会打印父页面的内容。 (这不会发生在Chrome上。)
是否有修复程序使IE 8仅打印window.print()
的内容?
有趣的是,通过公共函数返回iframe
,即使使用IE 8,也会返回window.document.title
内容的title
。
小提琴演示了问题并提供了更多细节。
答案 0 :(得分:2)
在IE中,您需要将焦点设置到要打印的窗口。当函数在父页面中时,这将打印iframe:
function printContent(){
var el = document.getElementById('myFrame');
el.contentWindow.focus();
el.contentWindow.print();
return;
}
如果功能在iframe中,您可以从任何地方打印:
function printContent(){
window.focus();
window.print();
return;
}