2015-08-08 19 views
7

Microsoft Edge nie obsługuje konsekwentnie window.print() w porównaniu z innymi przeglądarkami.MS Edge - window.print() nie jest ramką kontekstową na krawędzi MS

W większości przeglądarek wywołanie window.print() z wewnątrz elementu iframe na stronie spowoduje wydrukowanie tylko zawartości tego elementu iframe. Jednak na brzegu zawsze wydrukuje cały dokument.

Czy było to zamierzone? Czy istnieje obejście?

Przykład na 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

Nic nie wskazuje, że powinna zostać zmieniona http://www.w3.org/html/wg/drafts/html/master/webappapis.html#printing prawdopodobnie błąd lub niedopatrzenie. –

Odpowiedz

6

To confirmed issue z Microsoftem, cytuję: jeszcze

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 

Nie istnieje obejście.

-1

Jest również w IE. Możesz to naprawić w ten sposób.

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

Jest testowany. ;)

+0

To działa dla IE, ale nie dla Edge (v20.10240) – Justin

3

Mamy Fount magiczne rozwiązanie:

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

... działa w IE, EDGE, Chrome. Drugi nie był jeszcze przetestowany.

+0

Gdzie uruchamiasz ten kod i jak? i co się stanie, jeśli masz otwartych wiele elementów iframe PDF? (kiedy po prostu wykonuję ten kod, otrzymuję komunikat "Nie można uzyskać właściwości" contentWindow "niezdefiniowanego lub zerowego odniesienia"). – Peter