Печать на принтере изображения
Использую функцию, которая прекрасно печатает из 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, время: 03:07. |