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. ;)