简体   繁体   中英

MS Edge - window.print() is not frame contextual in MS edge

Microsoft Edge is not handling window.print() consistently when compared with other browsers.

In most browsers calling window.print() from within an iframe on a page will only print the contents of that iframe. However in edge it will always print the whole document.

Was this intentional? Is there workaround?

Example on JSFiddle .

iframe.html

...
<body>
    <a href="#" onclick="window.print()">print iframe document</a>
</body>
...

index.html

...
<body>
    <a href="#" onclick="window.print()">print outer document</a>
    <iframe src="iframe.html"></iframe>
</body>
...

This is a confirmed issue with microsoft, quote:

Posted by Microsoft on 7/29/2015 at 12:46 AM
We were able to confirm the issue, and will be working to resolve it in a future release

No workaround exists yet.

We fount a magic solution:

parent.document.getElementsByName("pdfjs-frame")[0].contentWindow.document.execCommand("print", false, null);

...works in IE, EDGE, Chrome. The other was not tested yet.

Its in IE too. You can fix it like this.

window.top.document.getElementById("iframe-id").contentWindow.focus();
window.top.document.getElementById("iframe-id").contentWindow.print();

It is tested. ;)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM