2015-08-08 15 views
7

Microsoft Edge verarbeitet window.print() nicht konsistent im Vergleich zu anderen Browsern.MS Edge - window.print() ist in MS Edge nicht Frame-kontextbezogen

In den meisten Browsern wird das Aufrufen von window.print() innerhalb eines iframe auf einer Seite nur den Inhalt dieses iframes ausgeben. Im Rand wird jedoch immer das gesamte Dokument gedruckt.

War dies beabsichtigt? Gibt es eine Problemumgehung?

Beispiel für 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> 
... 
+0

Nichts deutet darauf hin, dass es geändert werden sollte http://www.w3.org/html/wg/drafts/html/master/webappapis.html#printing wahrscheinlich einen Fehler oder ein Versehen. –

Antwort

6

Dies ist ein confirmed issue mit Microsoft, Zitat:

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 

Keine Abhilfe noch vorhanden ist.

-1

Es ist in IE auch. Du kannst es so reparieren.

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

Es ist getestet. ;)

+0

Das funktioniert für IE aber nicht für Edge (v20.10240) – Justin

3

Wir fount eine magische Lösung:

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

... arbeitet in IE, EDGE, Chrome. Der andere wurde noch nicht getestet.

+0

Wohin führen Sie diesen Code und wie? Und was passiert, wenn Sie mehrere PDF-Iframes geöffnet haben? (Wenn ich diesen Code gerade ausführe, bekomme ich 'Unable to contentWindow 'der Eigenschaft' undefined oder null reference '). – Peter