这里的想法是让iframe
的内容打开一个新的选项卡窗口,并将新窗口的HTML替换为从iframe获得的内容。
所以在下面的组件中
const printComp = ()=>{
onPrint = () => {
let temp = document.getElementById('iprintable') as HTMLIFrameElement;
let win = window.open();
const content= temp!.contentWindow!.document.documentElement); // Here I have a complete document
/* here I have tried followings*/
};
return <button className="..." onClick={this.onPrint}/>
}
所以尝试用:
win!.document = content /* Cannot assign to 'document' because it is a read-only property*/
win!.document.body = content /*The new body element is of type 'HTML'. It must be either a 'BODY' or 'FRAMESET' element.*/
win!.document.body.innerHTML=content /*Type 'HTMLElement' is not assignable to type 'string'*/
使用win!.document.body.innerHTML=content.innerHTML
可以,但是iframe中Head
的内容将转到body
标签。可以还是不应该那样?
一般来说,我应该如何用iframe的内容替换新标签窗口的全部内容。
P.S:总的来说,我发现打印iframe的内容很麻烦,这是我的做法,因为我的previous question没有得到答案(仍然有赏金:))