2011-11-23 17 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とGoogle Chromeでこれをテストしたので、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要素のidが、これは現在のページのdivを印刷することを通知したいです。 問題が発生した場合にお試しください。
おかげで、
Gourav

+0

doesntの仕事であることを行うにはどのようMDNの良い例があります。 –

関連する問題