2011-11-23 82 views
22
<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> 

我正在使用此腳本來打印網頁。 我的意見渲染這個頁面和JS照顧所有其他事情。僅使用url打印網頁並且不打開新窗口?

但我不想爲此打開新窗口。那麼,我應該使用什麼來代替window.open(URL),因此no new window會打開。同樣,我不想爲print function打開新窗口。因此,每當我渲染此頁面時,它都會在同一頁面上執行所有操作。沒有新窗口,沒有新標籤。我怎樣才能做到這一點。我谷歌,但似乎沒有工作。

回答

36

您可以使用隱藏的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和谷歌瀏覽器中測試過了,所以我不確定這是否適用於Safari或Firefox。

+0

謝謝!完美的作品! –

+0

在「/ url/to/page/to/print」中,可以直接輸入我的html代碼嗎? –

+1

@VitorGuerreiro:是的,你想打印的HTML代碼應該在那個URL;該HTML代碼應該也有答案中提到的javascript代碼(與window.print(); – andragon

-2
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函數。「主」是我們有沒有開打印到新的window.I要通知,這將打印當前頁面的div的div ID。 如有任何問題,請嘗試並切換。
謝謝
Gourav

+0

不工作。 – 2015-03-13 08:22:45