 
			
				04.08.2017, 12:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.04.2014 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Печать на принтере изображения
			 
			
		
		
		
		Использую функцию, которая прекрасно печатает из 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;
	    }
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 12:45
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		paveltkachev, у меня этот код в Хроме работает адекватно:
 
var win=open('','_blank');
win.document.body.innerHTML='ASD';
win.print();
win.close();
В общем-то как и Ваш код.
 
Возможно браузер блокирует открытие нового окна, у вас проверка его открытия отсутствует.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 14:53
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.04.2014 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Простите, я не описал проблему. Картинка не отображается. 
Если убрать 
 
mywindow.print();
 
то я вижу картинку. А если его вернуть, то в окне печати её нет и на бумаге тоже нет. Это только для Chrome и Opera так, в IE и FireFox картинка есть и во всплывающем окне и на печати.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 15:22
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.11.2015 
					
					
					
						Сообщений: 2,899
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		paveltkachev, 
 попробуйте обернуть часть скрипта с mywindow.document.write и далее в
 
mywindow.onload = function() {
}
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 15:39
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		paveltkachev, 
Картинка, скорее всего, не успевает загрузиться. 
Вызывайте методы «print» и «close» после того, как изображение загрузится. 
Типа так:
 
mywindow.document.getElementsByTagName('img')[0].onload=function(){
mywindow.print();
mywindow.close();
};
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Nexus, 04.08.2017 в 16:39.
				Причина: Bugfix, line 1
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 15:51
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.04.2014 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Nexus
			
		
	 | 
 
	
		Картинка, скорее всего, не успевает загрузиться. 
Вызывайте методы «print» и «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 так и не наступает.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 15:55
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.04.2014 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Причём это во всех браузерах. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 16:42
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		paveltkachev, если в консоли ошибок нет, то в конец добавь это:
 
if(mywindow.document.readyState=='complete')
    mywindow.document.getElementsByTagName('img')[0].dispatchEvent(new Event('load'));
PS. в консоли обязана присутствовать ошибка, т.к. метод «getElementsByTagName» возвращает массив элементов, а повесить обработчик на массив невозможно. Свой комментарий я поправил. 
Хреново, что вы игнорируете консоль.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				04.08.2017, 17:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 09.04.2014 
					
					
					
						Сообщений: 74
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Nexus
			 
		
	 | 
 
	
		paveltkachev, если в консоли ошибок нет, то в конец добавь это: 
if(mywindow.document.readyState=='complete')
    mywindow.document.getElementsByTagName('img')[0].dispatchEvent(new Event('load'));
 
 
PS. в консоли обязана присутствовать ошибка, т.к. метод «getElementsByTagName» возвращает массив элементов, а повесить обработчик на массив невозможно. Свой комментарий я поправил. 
Хреново, что вы игнорируете консоль.
	 | 
 
	
 
 Теперь всё работает. Спасибо за помощь!
 
К сожалению, в консоли я не вижу ошибку.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |