2011-12-26 10 views
0

PHPで書かれたWebアプリケーションがあり、HTML形式のレポートが多数あります。時には、私は1ページに異なるレポートを持ち、それぞれには印刷ボタンがあります。jQueryを使用してページの一部をクリップボードにコピー

解決策の1つは、新しいページでPHP変数を使用してレポートを再度生成することです。

しかし、私はそれを行う別の方法があると思います。私はすべてのレポートテーブルのHTMLコードをクリップボードにコピーし、新しいウィンドウを開き、クリップボードのデータを貼り付け、最後にページの内容を印刷することができます。 http://archive.plugins.jquery.com/project/clipboardで何かを見ましたが、このプラグインはもう動作しないようです。

私の問題(クロスブラウザ)を解決するための考えはありますか?

+0

ブラウザ内のものをクリップボードにコピーする方法が必要ですか? –

+0

はい。 HTMLタグとその内容をコピーしてください... –

+0

http://stackoverflow.com/questions/1539641/copy-text-to-the-clients-clipboard-using-jquery? – Fenec

答えて

3

レポートテーブルのHTMLコードをすべてクリップボードにコピーし、新しいウィンドウを開き、クリップボードのデータを貼り付け、最後にページの内容を印刷することができます。あなたは、クリップボードには、ユーザの利便性のために存在していない、と:あなたはこのためにクリップボードを必要としない、とあなたはそれがあなたのを仕事を得ることができた場合でもは、このためにクリップボードを使うべきではありません

それ以前にあったものを上書きすることは適切ではありません。

幸いにも、あなたが新しいウィンドウを開き、クリップボードの近くにどこにも行かずにその内容を設定することができます(Chromeのみでテスト)

function printReport(elementId) 
{ 
    var elementToPrint = $("#" + elementId), 
     printWin = window.open("", "Print", 'left=20,top=20,width=400,height=400'); 

    printWin.document.write(elementToPrint.html()); 
    printWin.document.close(); 
    printWin.focus(); 
    printWin.print(); 
    printWin.close(); // optionally close the new window immediately 
} 

の作業のデモ:明らかに、これは単なるですhttp://jsfiddle.net/Vc5yy/

注意ベアボーンのソリューションですが、それはあなた自身のソリューションを完成させるために必要なすべてのものを提供するはずです。適切なCSSスタイルシートなどを適用したいと思うかもしれませんが、主なものは、2度目のウィンドウを開くと、何でもしたいものを書いてからwindow.print()関数を呼び出すことです。

上記の関数をイベントハンドラから実行する必要があります(私のデモに表示されているようにボタンをクリックするなど)、ブラウザのポップアップブロッカーが開かない可能性があります。

+0

親愛なるnnnnnnありがとうございます。 –

+0

これはIE8では動作しないようです。 – thomasdecrick

関連する問題