window.print () не работает в IE - PullRequest
62 голосов
/ 31 марта 2010

Я делаю что-то вроде этого в javascript, чтобы напечатать раздел моей страницы при нажатии на ссылку

function printDiv() {
 var divToPrint = document.getElementById('printArea');
 var newWin = window.open();
 newWin.document.write(divToPrint.innerHTML);
 newWin.print();
 newWin.close();
}

Отлично работает в Firefox, но не в IE.

Может кто-нибудь, пожалуйста, помогите

Ответы [ 16 ]

2 голосов
/ 11 апреля 2014

Мне сказали сделать document.close после document.write, я не вижу, как или почему, но это заставило мой скрипт ждать, пока я не закрою диалоговое окно печати, прежде чем он запустит мой window.close.

var printContent = document.getElementbyId('wrapper').innerHTML;
var disp_setting="toolbar=no,location=no,directories=no,menubar=no, scrollbars=no,width=600, height=825, left=100, top=25"
var printWindow = window.open("","",disp_setting);
printWindow.document.write(printContent);
printWindow.document.close();
printWindow.focus();
printWindow.print();

printWindow.close();
2 голосов
/ 22 апреля 2011

Закройте окно только тогда, когда оно не IE:

function printDiv() {
 var divToPrint = document.getElementById('printArea');
 var newWin= window.open();
 newWin.document.write(divToPrint.innerHTML);
 newWin.print();
 if (navigator.appName != 'Microsoft Internet Explorer') newWin.window.close();
}
2 голосов
/ 31 марта 2010

Обычно мы работаем с печатью, просто открывая новое окно со всем, что необходимо отправить на принтер. Затем мы действительно нажимаем на кнопку «Печать» в своих браузерах.

Это всегда было приемлемо в прошлом, и это обходило ограничения безопасности, о которых говорит Чилн.

2 голосов
/ 31 марта 2010

Я не уверен, но я думаю, что это происходит из-за правил безопасности InternetExplorer ...

Если вы вызываете функцию наподобие print (), она запрашивает пользователя вручную, хочет ли он разрешить активные сценарии, если он щелкает желтую полосу и выбирает «Да», появляется диалоговое окно печати. Если вы нажимаете «Нет» или просто ничего не делаете, то это не выполнение частей, которые рассматриваются как активные сценарии или другие функции, связанные с безопасностью javascript.

В вашем примере открывается окно, затем вызывается print (), выскакивает панель подтверждения (ничего не выбрано, фактически ничего не может быть выбрано из-за короткого времени), вызывается newWin.close (), окно закрывается.

Попробуйте добавить страницу на доверенные сайты в InternetExplorer или изменить настройки безопасности.

Может быть способ обработки политик безопасности в самом javascript, но я мало что знаю о политиках безопасности InternetExplorer.

Надеюсь, это поможет

1 голос
/ 18 мая 2011

Я тоже столкнулся с этой проблемой.

Проблема в IE есть newWin.document.write (divToPrint.innerHTML);

когда мы удаляем эту функцию печати строки в IE работает. но опять же проблема с содержанием страницы.

Вы можете открыть страницу с помощью window.open и написать содержимое на этой странице. тогда функция печати будет работать в IE. Это альтернативное решение.

Удачи.

@ Pratik

0 голосов
/ 13 сентября 2016
function functionname() {

    var divToPrint = document.getElementById('divid');
    newWin= window.open();
    newWin.document.write(divToPrint.innerHTML);
    newWin.location.reload();
    newWin.focus();
    newWin.print();
    newWin.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...