Печать на принтере изображения
Использую функцию, которая прекрасно печатает из FireFox и IE, но не работает в Chrome и Opera. Подскажите, как сделать печать, работающую из всех браузеров?
function Print() { var mywindow = window.open('', 'Лыжный пер., д.2', 'height=566,width=400'); mywindow.document.write('<html><head><title>Лыжный пер., д.2</title>'); mywindow.document.write('</head><body>'); mywindow.document.write('<img height="100%" width="100%" src="http://xn--2-ktbjgl6fc.xn--p1ai/web.png">'); mywindow.document.write('</body></html>'); mywindow.focus(); mywindow.print(); mywindow.close(); return true; } |
paveltkachev, у меня этот код в Хроме работает адекватно:
var win=open('','_blank'); win.document.body.innerHTML='ASD'; win.print(); win.close(); В общем-то как и Ваш код. Возможно браузер блокирует открытие нового окна, у вас проверка его открытия отсутствует. |
Простите, я не описал проблему. Картинка не отображается.
Если убрать mywindow.print(); то я вижу картинку. А если его вернуть, то в окне печати её нет и на бумаге тоже нет. Это только для Chrome и Opera так, в IE и FireFox картинка есть и во всплывающем окне и на печати. |
paveltkachev,
попробуйте обернуть часть скрипта с mywindow.document.write и далее в mywindow.onload = function() { } |
paveltkachev,
Картинка, скорее всего, не успевает загрузиться. Вызывайте методы «print» и «close» после того, как изображение загрузится. Типа так: mywindow.document.getElementsByTagName('img')[0].onload=function(){ mywindow.print(); mywindow.close(); }; |
Цитата:
var mywindow = window.open('', 'Лыжный пер., д.2', 'height=566,width=400'); mywindow.document.write('<html><head><title>Лыжный пер., д.2</title></head><body><img width="100%" src="http://xn--2-ktbjgl6fc.xn--p1ai/web.png"></body></html>'); mywindow.document.getElementsByTagName('img').onload=function(){ mywindow.focus(); mywindow.print(); mywindow.close(); }; Однако, теперь картинка загружается, а вызов печати так и не происходит. Получается, что событие onload так и не наступает. |
Причём это во всех браузерах.
|
paveltkachev, если в консоли ошибок нет, то в конец добавь это:
if(mywindow.document.readyState=='complete') mywindow.document.getElementsByTagName('img')[0].dispatchEvent(new Event('load')); PS. в консоли обязана присутствовать ошибка, т.к. метод «getElementsByTagName» возвращает массив элементов, а повесить обработчик на массив невозможно. Свой комментарий я поправил. Хреново, что вы игнорируете консоль. |
Цитата:
К сожалению, в консоли я не вижу ошибку. |
Часовой пояс GMT +3, время: 17:35. |