Я пытаюсь использовать window.open () для создания всплывающего окна, которое затем печатает, но у меня возникают проблемы с зависанием IE8 после его появления.
Подробнее:
В конце моего приложения я пытаюсь распечатать выводимую информацию, но я пытаюсь включить отдельные CSS, jQuery и Javascript в это всплывающее окно.Я думаю, что именно эти внешние ссылки приводят к зависанию IE8, но я не уверен.
Что происходит во всех других браузерах, которые я тестировал, это всплывающее окно, появляется диалоговое окно печати ипечатает нормально.
В IE8 всплывает окно, появляется контент и загружается CSS, но не Javascript.Если вы пытаетесь печатать вручную (Ctrl + P), он печатает без CSS.
Я попробовал следующие примеры: Элементы скрипта, написанные с document.write в окне, открытом с помощью window.openне выполняются в IE8 в Windows 7
Live демо
Если вы хотите увидеть живую версию, пожалуйста, посетите: http://roxulmaterialscalculator.com/ Вы должны будете заполнить информацию, требуемую приложением, если вы действительно хотите получить часть печати.(На втором шаге требуется просто заполнить радиовходы).
Чтобы увидеть полный JavaScript: http://roxulmaterialscalculator.com/js/scripts.js, где вы найдете другие методы, которые я пробовал.
Код
Передает элементы в функцию
$('#actionPrint').live('click', function(event){
printElem('#rc');
}
Открывает элемент и печатает его.
function printElem(elem) {
popup($j(elem).html());
}
function popup(data) {
var mywindow = window.open('', 'printSheet', 'height=500,width=800,scrollbars=1');
mywindow.document.open();
mywindow.document.write('<html><head><title>Roxul Insulation Calculator</title>');
mywindow.document.write('</head><body>');
mywindow.document.write('<div id="rc_logo"><img src="img/roxul-logo.png" alt="roxul-logo" /></div>');
mywindow.document.write(data);
mywindow.document.write('</body></html>');
var c = mywindow.document.createElement("link");
c.rel = "stylesheet";
c.type = "text/css";
c.href = "css/print.css";
mywindow.document.getElementsByTagName("HEAD")[0].appendChild(c);
var s = mywindow.document.createElement("script");
s.type = "text/javascript";
s.src = "js/jquery-1.5.2.min.js";
mywindow.document.getElementsByTagName("HEAD")[0].appendChild(s);
var s2 = mywindow.document.createElement("script");
s2.type = "text/javascript";
s2.src = "js/print.js";
mywindow.document.getElementsByTagName("HEAD")[0].appendChild(s2);
mywindow.print();
return true;
}