Печать веб-страницы с использованием только URL-адреса и без открытия нового окна?
<html>
<head>
<script type="text/javascript">
var URL = "http://localhost:8000/foobar/";
var W = window.open(URL); **Note1**
W.window.print();
</script>
</head>
<p> Print ME...............</p>
</html>
Я использую этот script для печати веб-страницы.
Мои представления отображают эту страницу, и JS позаботится обо всех других вещах.
Но я не хочу открывать для этого новое окно. Итак, что я должен использовать вместо window.open(URL)
, поэтому no new window
открывается. Точно так же я не хочу открывать новое окно для print function
. Так, всякий раз, когда я делаю эту страницу, он делает все на одной странице. Нет нового окна, нет новой вкладки. Как я могу это достичь. Я google, но ничего не работает.
Ответы
Ответ 1
Вы можете сделать это, используя скрытый iFrame (я использую jquery для примера):
function loadOtherPage() {
$("<iframe>") // create a new iframe element
.hide() // make it invisible
.attr("src", "/url/to/page/to/print") // point the iframe to the page you want to print
.appendTo("body"); // add iframe to the DOM to cause it to load the page
}
Это загрузит страницу, которую вы хотите распечатать. Для печати вы можете добавить код javascript на страницу печати, чтобы он печатался после загрузки:
$(document).ready(function () {
window.print();
});
Это напечатает страницу без отображения нового окна. Я тестировал это в IE8,9 и Google Chrome, поэтому я не уверен, работает ли это для Safari или Firefox.
Ответ 2
В MDN есть хороший пример, как это сделать со скрытым iframe
https://developer.mozilla.org/en-US/docs/Printing#Print_an_external_page_without_opening_it
Ответ 3
function CallPrint() {
var prtContent = document.getElementById('main');
var WinPrint = window.open('', '', 'width=800,height=650,scrollbars=1,menuBar=1');
var str = prtContent.innerHTML;
WinPrint.document.write(str);
WinPrint.document.close();
WinPrint.focus();
}
Вызов этой функции javascript при нажатии кнопки "Печать". "main" - это идентификатор div, который мы должны печатать, не открываясь в новое окно. Я хочу уведомить, что это будет печатать текущий div.
Попробуйте и ответьте в случае возникновения каких-либо проблем.
Спасибо,
Gourav