0

クリック時にページの事前定義された div を印刷する Java スクリプト印刷機能を使用しています。機能は次のとおりです。

<head>
<script type="text/javascript">
function printDiv(any printable div) {      
var printContents = document.getElementById(any printable div).innerHTML;      
var originalContents = document.body.innerHTML;       
document.body.innerHTML = printContents;       
window.print();       
document.body.innerHTML = originalContents; 
} 
</script>
</head>

プリンターフォームの入力方法と印刷可能な div は次のとおりです。

<body>
<input type="button" class="button" onclick="printDiv('any printable div')" name="print" value="print" />
<div id = "any printable div"> On button click contents here are printed </div>
</body>

関数に基づいてタスクを実行する同じページでj-queryテキストマーキー/スクローラーも使用しています

 $(document).ready(function(){

すべてが独立して正常に動作します。問題は、印刷ボタンをクリックすると、テキスト マーキー/スクローラーがテキストのスクロールを停止することです。ページが更新されるまで、スクローラーはテキストをスクロールできません。だから私はhtmlメタリフレッシュを使用していますが、それは訪問者にとって迷惑な経験になるかもしれません. iframeでもスクローラーを使用したくありません。

この時点で、j-query および Java スクリプト ベースのソリューションをいくつか試しました。スクリプトは、スクローラーが静かにある div を更新します (テキストのブロック全体をフェードインおよびフェードアウトするだけですが、実際にはテキストのスクロールを維持できません)。

上記で説明した状況に基づいて、特定の期間にスクローラー div をサイレントに更新する、適切な j-query または Java スクリプト ベースのソリューションはありますか?

4

2 に答える 2

0

変数名にスペースを含めることはできません。function printDiv(any printable div)構文エラーです。

代わりに試してください:

function printDiv(elId) {      
    var printContents = document.getElementById(elId).innerHTML;      
    var originalContents = document.body.innerHTML;       
    document.body.innerHTML = printContents;       
    window.print();       
    document.body.innerHTML = originalContents; 
}
于 2012-07-11T12:06:43.920 に答える
0

あなたが述べたことから、ここでの意図は、ページ全体ではなく、特定の div のみを印刷できるようにすることだと思います。その場合は、この機能を実行するためにここで極端に行くことになります。

印刷するページの見栄えの良いバージョン (メニューのないものなど) を作成したい場合は、印刷またはプレビューを印刷するときに異なる CSS を使用するにはどうすればよいですか? を参照してください。. その質問は、印刷に別の css セットを使用する方法を示しているため、印刷display:none;時に表示したくないものに設定できます。

単一の div のみを印刷する場合は、jQuery 印刷要素プラグインを確認できます。これは、html でリンクしてから呼び出す単純な js ファイルです。

$([selector]).printElement();

その要素だけを印刷します。たとえば、次のようにメソッドを書き換えることができます。

function printDiv(anyPrintableDiv) { 
    $('#' + anyPrintableDiv).printElement();
} 
于 2012-07-11T12:12:07.133 に答える