Окно.печать не работает в IE
Я должен распечатать div
что я делаю следующим образом:
function PrintElem(elem)
{
Popup(elem.html());
}
function Popup(data)
{
var mywindow = window.open('', 'to print', 'height=600,width=800');
mywindow.document.write('<html><head><title></title>');
mywindow.document.write('<link rel="stylesheet" href="css/mycss.css" type="text/css" />');
mywindow.document.write('</head><body >');
mywindow.document.write(data);
mywindow.document.write('</body></html>');
mywindow.print();
mywindow.close();
return true;
}
моя проблема в том, что в IE, когда я нажимаю кнопку, ничего не происходит. Однако, в Chrome и Firefox все работает. Что я могу сделать, чтобы распечатать его правильно?
EDIT: меня зовут print
следующим образом:
$('#print_it').click(function(){
var element = $('#itinerario');
PrintElem(element);
});
вот тут print_it
- это идентификатор кнопки.
еще одна вещь, которую я видел, это то, что через некоторое время Chrome вместе с другими браузерами говорит мне, что страница не отвечает. Почему это происходит?
4 ответов
вы должны mywindow.document.close()
и возможно нет места в имени окна
Я предполагаю, что вы вызываете PrintElem из onclick чего - то-если это что-то является ссылкой, вам нужно вернуть false в обработчике onclick!
вот как я бы это сделал, если бы мне пришлось
function PrintElem(elem) {
Popup($(elem).html());
}
function Popup(data)
{
var mywindow = window.open('', 'to_print', 'height=600,width=800');
var html = '<html><head><title></title>'+
'<link rel="stylesheet" href="css/mycss.css" type="text/css" />'+
'</head><body onload="window.focus(); window.print(); window.close()">'+
data+
'</body></html>';
mywindow.document.write(html);
mywindow.document.close();
return true;
}
но я не уверен, что это окно.close () будет мешать печати
а почему бы и нет
$(function() {
$('#print_it').click(function(){
popup($('#itinerario').html());
});
});
Я вижу, что вы решили его, используя заметку mplungjan об отсутствии пробелов в имени окна, но альтернативой было бы использовать стили css @media print, грубо:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
@media print {
* {
visibility: hidden;
}
.printMe {
visibility: visible;
}
}
</style>
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#Button1").click(function () {
var divToPrint = $("#div3");
$(divToPrint).addClass("printMe");
window.print();
$(divToPrint).removeClass("printMe");
}
)
}
);
</script>
</head>
<body>
<div id="div1">fhgjghajghhjagjdag</div>
<div id="div2">ytiyrtiyertuyeyiyt</div>
<div id="div3">We want to print this one.</div>
<div id="div4">vnbcxbvmzxbvc,xbv</div>
<div id="buttonContainer">
<input id="Button1" type="button" value="button" />
</div>
</body>
</html>
в моем случае мне просто нужно, чтобы использовать код ниже:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />