У меня есть кнопка, которая загружает отчет для печати в «невидимый» iframe внутри div и печатает этот iframe;пользователь нажимает кнопку, чтобы распечатать отчет (содержащийся на другой странице), не меняя страницы или визуальные сбои, кроме диалога печати.Он работает в Chrome и Firefox, но не в IE.В IE родительская страница печатается полностью, и крошечный испорченный iframe вставляется внизу страницы (где я загружаю iframe).
Вот пустой div без содержимого, он там такУ меня есть место с тегом ID для стилизации и вставки содержимого с помощью Javascript:
<div id="printerDiv"></div>
Вот функция javascript, при нажатии этой кнопки эта функция запускается и вставляет страницу печати в iframe внутри printerDiv после загрузки этой страницы.он печатает:
function printPage(url) {
var div = document.getElementById("printerDiv");
div.innerHTML = '<iframe src="'+url+'" onload=this.contentWindow.print();>
</iframe>';
}
Вот CSS, скрывающий div.Я использую абсолютное позиционирование, чтобы сдвинуть его с видимой области экрана.Раньше я использовал display: none, но Firefox не смог напечатать iframes с таким стилем:
#printerDiv{
position:absolute;
left:-9999px;
}
Когда я печатаю в IE, он печатает всю страницу, а затем внизу, где #printerDiv
Я получаю этот маленький iframe:
Итак, контент загружается, но он печатает не только iframe, и он также не скрывает iframe должным образом.Любой другой контент, который я вставляю в #printerDiv
, скрыт должным образом, только iframe отображается так.
Я пробовал все решения в этот вопрос в моей функции Javascript: использование self.prin
t, используя document.parentWindow.print
, изменение стилей для PrinterDiv на 0px высота / ширина также не работает.
Я рад приветствовать решения, которые не используют iframes (кажется, у IE есть серьезные проблемы с ними), но мне нужна эта возможность загружать контент, не видимый на экране, и печатать его напрямую с помощью кнопки.