Как открыть файл с помощью диалогового окна печати с помощью JavaScript - PullRequest
4 голосов
/ 15 апреля 2011

Я хочу открыть документ из одного слова с использованием JavaScript, а также открыть диалоговое окно печати для этого открытого окна документа.

Вот мой код.

window.open('http://www.tizaq.com');

window.print();

Это работает, но диалог печати открывается для текущего окна, а не для вновь открытого окна. Как мне это сделать?

Ответы [ 2 ]

13 голосов
/ 15 апреля 2011

Звоните print в новом окне, а не в старом:

var wnd = window.open('http://stackoverflow.com');
wnd.print();

Мне не нравятся ваши шансы на то, что это не отразится на безопасности браузера. :-) «Внешний» объект окна вполне может не поддерживать print (window объекты бывают двух типов: «внешний» тип, к которому имеют доступ другие окна, и «внутренний» тип, который ссылается на себя, который имеет больше разрешений и т. д.) По крайней мере, вам, вероятно, придется подождать событие загрузки, но, в общем, лучше всего, это будет сложно.

Кажется, что работает для документов с тем же происхождением, поэтому Политика одинакового происхождения является фактором. Этот пример дает сбой в IE6 (буквально сбивает браузер), но работает для меня в IE7 в Windows и Chrome и Firefox 3.6 в Linux (а не в Opera 11 в Linux). Вероятно, не мешало бы поставить задержку / доходность, например ::1013*

var wnd = window.open(your_path_here);
setTimeout(function() {
    wnd.print();
}, 0);

Вы сказали «слово документ» в своем вопросе, но ваш пример выглядит как веб-сайт. Я понятия не имею, будет ли это работать, если вы открываете документ Microsoft Word, загружая его в окно браузера.

0 голосов
/ 15 апреля 2011

Ну, лучше

var my_window = window.open("", "mywindow1", "status=1,width=350,height=150");
my_window.document.write("<scr" + "ipt>window.location.href='http://stackoverflow.com';window.print();</scr" + "ipt>");

try Как это или лучше сделать другую страницу, используя iframe для печати

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...