2011-01-11 7 views
4

私はjQueryを使って、このJavaScriptを使用して自分のアプリケーション内の特定のdivを印刷しようとしている:印刷JavaScriptを使用して本部とスタイルを保持

function PrintContent() 
{ 
w=window.open(); 
w.document.write($('#diary').html()); 
w.print(); 
w.close(); 
} 

それは新しいタブでのdivを開き、印刷オプションパネルが開きますCSSスタイルは失われます。私はprint.cssをmedia = "print"に設定しましたが、このファイルを新しいタブにロードしていないことは明らかです。つまり、CSSがある場所ではなくdivを読み込んでいるだけです。

どのように私はこれを修正できますか?私のjavascriptはそれほど強くない。

ありがとうございます!

+0

必要がありますか?またはメインページでそれを持つのに十分ですか? –

答えて

3

は、代わりにこのラインを使用してみてください:

w.document.write('<div id="diary">' + $('#diary').html() + '</div>'); 

あなたはdiv要素ではなく、実際のdivタグの内部HTMLを書いています。

上記の方法でも、divタグに正しいidが書き込まれます。あなたがdivではなくdiv#diaryをフォーマットしている可能性があるので、私はそこにIDを入れただけです。

EDIT

この方法では、スタイリングを維持する必要があります。

function PrintContent() 
{ 
    var e = document.createElement('div'); 
    e.id = 'diary'; 
    e.innerHTML = $('#diary').html(); 
    document.getElementById('t').appendChild(e); 
} 

あなたはただこのコンテンツは、そのようなtのIDを持つdivとして、挿入することができる場所を確認する必要があります。私がコメントに載せた例のように。

+0

こんにちは@ Wolfy87あなたの答えに感謝します。私は内側のHTMLについてそれを認識しませんでした。それでもフォーマットを失っているようだ? – Robimp

+0

@Robimpはい、これはHTMLを追加するだけなので、より良い方法はこのようなものになりますhttp://jsfiddle.net/Wolfy87/49N44/ – Olical

+0

必要なものに近いものを編集してください。 – Olical

0

のdocument.writeは悪い習慣ですので:私は、印刷中にそれが適用できるようにするためにDIV内で参照stlyesheetを持っている

https://github.com/jasonday/printThis

+0

このリンクは質問に答えるかもしれませんが、回答の重要な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 –

+0

よろしくお願いします。ありがとう! – Jason

関連する問題