2015-08-08 5 views
7

Microsoft Edge не обрабатывает window.print() последовательно по сравнению с другими браузерами.MS Edge - window.print() не является контекстом контекста в краю MS

В большинстве браузеров, вызывающих window.print() из iframe на странице, будет печататься только содержимое этого iframe. Однако в конце он всегда будет печатать весь документ.

Было ли это намеренно? Есть ли обходной путь?

Пример на 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

Ничто не указывает, что это должно быть изменено http://www.w3.org/html/wg/drafts/html/master/webappapis.html#printing, вероятно, ошибка или недосмотр. –

ответ

6

Это confirmed issue с Microsoft, цитата:

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 

Нет обходной путь еще не существует.

-1

Его тоже в IE. Вы можете это исправить.

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

Проверено. ;)

+0

Это работает для IE, но не для Edge (v20.10240) – Justin

3

Мы кладезь волшебное решение:

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

... работает в IE, EDGE, Chrome. Другой еще не был протестирован.

+0

Где вы запускаете этот код и как? и что произойдет, если у вас есть несколько PDF iframe? (когда я просто выполняю этот код, я получаю 'Невозможно получить свойство contentWindow 'неопределенной или нулевой ссылки'). – Peter