Javascript 在iFrame中将两个ContentWindow打印为一个

Javascript 在iFrame中将两个ContentWindow打印为一个,javascript,html,iframe,printing,dojo,Javascript,Html,Iframe,Printing,Dojo,我有一个包含多个iFrame的网页,例如6 我希望能够将其中的两个帧打印为一个调用,而不是抓取每个帧的contentWindow然后调用: parent.iFrame1.focus(); parent.iFrame1.print(); parent.iFrame2.focus(); parent.iFrame2.print(); 当它在浏览器中的两个单独的打印预览窗口中打印内容时 我尝试了以下方法,但没有一个能真正提供我想要的或为我工作的内容(即内容被截断) 这是可能的,还是我在打一匹死马 我

我有一个包含多个iFrame的网页,例如6 我希望能够将其中的两个帧打印为一个调用,而不是抓取每个帧的contentWindow然后调用:

parent.iFrame1.focus();
parent.iFrame1.print();
parent.iFrame2.focus();
parent.iFrame2.print();
当它在浏览器中的两个单独的打印预览窗口中打印内容时

我尝试了以下方法,但没有一个能真正提供我想要的或为我工作的内容(即内容被截断)

这是可能的,还是我在打一匹死马

我也尝试过从iFrame中获取html并将其写入一个新文档,但我觉得这有点笨手笨脚。此外,还有多个css和脚本文件等需要合并以呈现一个内聚页面

任何答案都将不胜感激

到目前为止,我尝试过的潜在解决方案尚未奏效:


我会使用另一个iframe来完成这项工作。但iframe必须位于同一域中

在您的主页上(例如mydomain/index.html)


.打印{
可见性:隐藏;
}
函数printIframes(URL){
var iframe=document.createElement('iframe');
iframe.className=“打印”;
iframe.src=`print.html?url=${encodeURIComponent(url.join(','))}`;
iframe.onload=函数(){
this.contentWindow.focus();
这个.contentWindow.print();
};
document.body.appendChild(iframe);
}
printIframes()
函数获取要打印的外部页面的URL数组。它创建一个“不可见”的iframe(请参见
.iframe
css类),该类在查询字符串中加载
print.html

如果您直接访问该iframe,您将看到:


在print.html中例如mydomain/print.html

此页面解码
url
查询字符串,并为每个要加载的url创建一个iframe


var url=document.location.search.split('=')[1];
URL=解码组件(URL);
url=url.split(',');
forEach(url=>{
var iframe=document.createElement('iframe');
iframe.src=url;
document.body.appendChild(iframe)
});

示例

在这个屏幕截图中,我加载主页(index.html),并在开发人员控制台中调用
printIframes()
函数:(您实际上不会看到它们)

然后紧接着请求打印该iframe的内容


实际上看起来很棒!是否也可以调整iframe的大小以显示其内部内容的大小?我不确定,您希望每个iframe根据其内容自动调整大小?因此对于每个帧,它们可以具有不同长度的内容。例如一页和另一页的四分之一。我的问题是,当页面加载时,是否有办法调整框架的大小以显示所需的所有内容。这可能是可行的。如果页面A包含页面B,并且两者都在同一个域中,则页面B可能会将其维度传递到页面A,从而相应地调整指向页面B的iframe的大小。