Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Печать контента с сервера получаемого по АЯКС (https://javascript.ru/forum/misc/12764-pechat-kontenta-s-servera-poluchaemogo-po-ayaks.html)

miha-ha 02.11.2010 11:53

Печать контента с сервера получаемого по АЯКС
 
Вопрос в том как полученные данные с сервера сразу вывести на печать без отображения нового окна?
Что бы сразу появлялся диалог печати?

Вот код:
var win = window.open('about:blank','movement','height=400,width=600,resizable=1,scrollbars=1, menubar=0');
                win.document.open();
                win.document.write("<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'><html xmlns='http://www.w3.org/1999/xhtml'><head><meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' /><title>Printing the Grid</title><link rel='stylesheet' type='text/css' href='css/printstyle.css'/></head><body>
Что печатать, когда нечего печатать?
</body></html>");
                win.print();

Я его вызываю когда пришли данные с сервера, но мне не нужно их показывать а сразу показать дилог печати...
Возможно такое?

Kolyaj 02.11.2010 12:01

Загрузить их в скрытый iframe и его напечатать.

2de 02.11.2010 12:43

Используйте тэг мета с атрибутом media, и ЦССом выводить только тот блок в который был загружен аяксовый контент

miha-ha 02.11.2010 12:43

Цитата:

Сообщение от Kolyaj (Сообщение 77014)
Загрузить их в скрытый iframe и его напечатать.

А как напечатать iframe?
Не работает..
var iframe = Ext.get('forprint');
iframe.print();


Или использовать onLoad у frame и там вызывать window.print() ?

Kolyaj 02.11.2010 12:45

Проще в самом iframe вызвать window.print() по onload.

miha-ha 03.11.2010 10:36

Цитата:

Сообщение от Kolyaj (Сообщение 77024)
Проще в самом iframe вызвать window.print() по onload.

Этот код
<iframe id="forprint" name="forprint" src="about:blank" style="display:none; width:400px; height:500px; border: 0px onload="window.print();" ></iframe>


Не срабатывает...

Этот код
window.frames['forprint'].document.write('Печатает?!');
 window.frames['forprint'].focus();
 window.frames['forprint'].print();

Вроде заработал, но после нескольких вызовов диалог печати вызывает а на печати ничего нет :(

Как распечатать необходимый контент а не всё окно???

miha-ha 03.11.2010 10:44

Цитата:

Сообщение от 2de (Сообщение 77022)
Используйте тэг мета с атрибутом media, и ЦССом выводить только тот блок в который был загружен аяксовый контент

Извините пропустил Ваш ответ...

Можно поподробнее?

Как именно: "ЦССом выводить только тот блок в который был загружен аяксовый контент"?

Kolyaj 03.11.2010 10:45

В самом iframe значит в странице, которая загружается в iframe.

ksa 03.11.2010 11:54

Цитата:

Сообщение от miha-ha
Как именно: "ЦССом выводить только тот блок в который был загружен аяксовый контент"?

Как вариант...

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
@media screen { 
	/* Стиль для отображения в браузере */
	#load_data {
		display: none;
	}
}
@media print { 
	/* Стиль для печати */
	#content {
		display: none;
	}
}
</style>
<script>
</script>
</head>
<body>
<div id='content'>
	<p>На экране.</p>
</div>
<div id='load_data'>
	<p>На печать.</p>
</div>
</body>
</html>

miha-ha 03.11.2010 14:08

Цитата:

Сообщение от Kolyaj (Сообщение 77168)
В самом iframe значит в странице, которая загружается в iframe.

iFrame печатается, почему-то накапливает в себе загружаемые данные а не перепичсывает их каждый раз.

Как очистить данные в iFrame после печати?


Часовой пояс GMT +3, время: 17:41.