2012-01-13 12 views
2

次のコードブロックがあり、印刷用のレイアウトを除いて、現在のウィンドウの内容で新しいブラウザウィンドウを開きます。次に、新しいページをプリンタに送信し、最後にページを閉じます。私が抱えている問題は、プリンタタブがすべてのデータを取得する前に、新しいウィンドウが閉じているように見えることです。おそらく完了時にclose()を呼び出すprint()からのコールバック?この機能を実装するにはどうすればいいですか? ありがとうございます。コンテンツがPrinter(JavaScript)に移動する前にウィンドウが閉じる

PRINTリスト

<script type="text/javascript"> 
    function generate_url() 
    { 
     //var go_href = 'http:<?php echo BASE_URL ?>/admin/reservations/print_list'; 
     myWin = window.open('http:<?php echo BASE_URL ?>/admin/reservations/print_list'); 
     myWin.focus(); 
     myWin.print(); 
     myWin.close() 
     return false; 
    } 

</script> 

答えて

2

私は、印刷のための任意のコールバック関数があると思ういけません。私はあなたには、いくつかの方法で助けるかもしれない窓の開閉を、遅らせることができますお勧め:

 

myWin.focus(); 
myWin.print(); 
setTimeout(function(){ 
    myWin.close(); 
}, 6000); 
 

は、それが何らかの方法で

+0

感謝。それは私が現在実装しているものですが、私はそれがすべての時間で動作しないことを心配しています。誰かが古いシステムで作業している、またはリストが非常に大きい場合、ウィンドウコンテンツが印刷画面に移動するまでに時間がかかることがあり、ウィンドウを閉じるのが早すぎる可能性があります... Thanks –

0

が全くJavaScriptと新しいページを取り除くのに役立ちます願っています。プリントメディアスタイルシートを使用して、印刷したくないコンテンツを取り除く(display: none)。

+0

Thanks Quentin - あなたがあなたのexplinationについてもう少し詳しく説明できますか? –

+0

あなたが知らない場合:ブラウザーは印刷に異なるCSSを使うことができます。つまり、 'window.print()'を呼び出すときや、スタイルシート:http://www.alistapart.com/articles/goingtoprint/。したがって、同じHTMLページには、「プリンタフレンドリーバージョン」とスクリーンフリードバージョンがあります。これはあなたの状況に適しているかもしれません。 – user123444555621

0

新しいウィンドウを開きますが、コンテンツをロードしないでくださいは、途方もなく長いタイムアウトの後、それを削除するか、単に残し、あなたがさらに印刷のために、この後のiframeを再利用することが

var ifr = document.createElement('iframe'); 
ifr.style.display = 'none'; 
ifr.src = '/admin/reservations/print_list'; 
ifr.onload = function() { 
     ifr.contentWindow.print(); 
} 
document.body.appendChild(ifr); 

非表示のiframeに印刷しますそれはページ上にあります。

+0

ありがとうPumbaa80、それは完全に動作しているようで、私はページにiframeを残して幸せです。 –

0

ありがとうPumbaa80しかし、IE6/7はevalです!

私はie/7でテストするので、うまくいきます!印刷ページ内

var printIframe = document.getElementById('printIframe'); 
printIframe.src = 'print.php'; 

<iframe id="printIframe" style="width: 0; height: 0;" /> 

:親ページで

そのためのSudhir

<body onload="this.focus(); this.print();"> 
関連する問題