我想出了一个方法来解决它。
目的是通过使用 javascript 操作 DOM 将所有 iframe 的内容获取到父窗口中。
使用此解决方案,您甚至可以避免 iframe 超过一页时被切断的问题。
这是代码:
<script>
pages =[] // initiate an empty list here
function printPage() {
var frames = document.getElementsByTagName('iframe');
// get all the iframes and loop over them
// then push their innerHTML into the list
for (var i = 0; i < frames.length; i++){
pages.push(frames[i].contentWindow.document.body.innerHTML);
;
}
if (pages && pages.length) {
// this if statement, just checks to ensure our list is not empty before running the code.
// here is the magic, we now set the parent window to be equal to all the concatenated iframes innerHTML
window.content.document.body.innerHTML = pages;
// then we print this new window that contains all the iframes
window.print();
}
else {
// do nothing
}
}
</script>
有了这个,你只会得到一个打印对话框来打印所有的 iframe。
请记住,在您的父页面 HTML 中,您将拥有以下代码来调用 printPage 函数。
<input type="submit" value="Print All"
onclick="javascript:printPage()"
/>