Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2015, 17:34
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

открыть в новом окне и отправить на печать
Всем привет.
У меня работал js скрипт на странице, который выводит на печать страницу. Так вот после обновления браузера (хром), заметил что при выводе на печать стиль style_print.css не применяется. А если отменить печать и не закрыть окно печати, то стили прогружаются сами...

Вот мой код вывода на печать:
$("#print_tab").click(function() {
	    var new_wnd = window.open(location.href+"?tmpl=component&print=1&layout=default&page=", "subWindow", "status,menubar,height=700,width=700,scrollbars=yes");
        var new_content = '<html><head><title>123</title><meta http-equiv="content-type" content="text/html; charset=utf-8" />'; 
		css_path = "<?php echo JURI::base().'css/style_print.css'; ?>"
		new_content += '<script type="text\/javascript">function ImportStyleFile () {'
        new_content +=    'var linkTag = document.createElement ("link");'
        new_content +=    'linkTag.href = "'+ css_path +'";'
        new_content +=    'linkTag.rel = "stylesheet";'
        new_content +=    'var head = document.getElementsByTagName ("head")[0];'
        new_content +=    'head.appendChild (linkTag);'
        new_content += '}<\/script>';
		new_content += '</head><body onload="ImportStyleFile()">';
		new_content += $("#main_tab").html();
		new_content += '</body><html>';
		new_wnd.document.write(new_content);
		new_wnd.document.close();
		new_wnd.print();
	  });

Поэтому я хочу обойти этот глюк. При нажатии кнопки на печать, чтоб открывалась страница в новом окне со стилем style_print.css, и когда она догрузилась, вызывать команду браузера выбора принтера...
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2015, 18:44
Новичок на форуме
Отправить личное сообщение для ник Посмотреть профиль Найти все сообщения от ник
 
Регистрация: 12.03.2015
Сообщений: 4

добрый вечер помогите пож решить
подсчитать сумму чисел кратных 5 и произведение положительных чисел вводимых с клавиатуры. ввод чисел должен быть завершен при наборе числа 0
Ответить с цитированием
  #3 (permalink)  
Старый 12.03.2015, 20:20
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

kristow, зачем ты подключаешь таким странным образом? Почему просто не прописать через тег <link> прямо в разметке?

Пояснение: тег <link> блокирует дальнейшую обработку документа до тех пор пока не стиль не подгрузится и не применится. Соотв-но к моменту исполнения скрипта все будет уже готово.
Если же стиль добавлять через appendChild, то стиль будет подгружаться асинхронно, и скорее всего не успеет подгрузиться.

Помимо этого, print() надо наверное разместить внутри html кода, чтобы он не выполнился раньше загрузки стиля.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 27.10.2016, 09:04
Аватар для kristow
Аспирант
Отправить личное сообщение для kristow Посмотреть профиль Найти все сообщения от kristow
 
Регистрация: 26.02.2015
Сообщений: 49

Спасибо за ответы.
Сделал вот так:
$("#print_tab").click(function() {
		
	    var new_wnd = window.open(location.href+"?tmpl=component&print=1&layout=default&page=", "subWindow", "status,menubar,height=800,width=800,toolbar=1,scrollbars=yes");
        var new_content = '<html><head><title>Мой сайт</title><meta http-equiv="content-type" content="text/html; charset=utf-8" />';
		new_content += '<link rel="stylesheet" type="text/css" href="css/style_print2.css?<?php echo rand()*10000; ?>" /></head><body>'
		new_content += '<img src="img/sp.png" class="leftimg">';
		new_content += $("#main").html();
		new_content += '</body><html>';
		new_wnd.document.write(new_content);

		new_wnd.document.close();
		new_wnd.focus();
		setTimeout(function() {
			new_wnd.print();
			new_wnd.close();
		}, 100);
	  });

Вроде как и стиль прогружается... Но вот возник другой вопрос...
Как программно включить в настройках печати браузеров: "Верхние и нижние колонтитулы" и "Фон"?
Если включаю эти настройки руками, то все отлично, и при печати выводятся колонтитулы и фон в таблице который нужен.
Но открываю на другом ПК, и вижу что эти же настройки выключены.

Подскажите как можно программно задать автоматическое включение этих настроек в браузере при печати с моего сайта?
Изображения:
Тип файла: jpg 2016-10-27_9-02-52.jpg (5.3 Кб, 2 просмотров)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть в новом окне по событию button onclick Kaleos Events/DOM/Window 2 05.11.2013 10:16
Динамическое создание iframe в Firefox mrbean11 Firefox/Mozilla 8 02.11.2012 21:23
Открыть документ в новом окне или вкладке и передать в него параметр post platedz Элементы интерфейса 7 04.09.2012 23:04
Как открыть видео в новом окне? Dobriy Общие вопросы Javascript 5 31.01.2012 13:32
Не получается открыть в новом окне andreisurger1 Общие вопросы Javascript 4 20.03.2011 13:03