Javascript 在iFrame中将两个ContentWindow打印为一个
我有一个包含多个iFrame的网页,例如6 我希望能够将其中的两个帧打印为一个调用,而不是抓取每个帧的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(); 当它在浏览器中的两个单独的打印预览窗口中打印内容时 我尝试了以下方法,但没有一个能真正提供我想要的或为我工作的内容(即内容被截断) 这是可能的,还是我在打一匹死马 我
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的大小。