2012-07-11 26 views
0

我使用的是一個java腳本打印功能,可以在點擊時打印頁面的預定義div。該函數爲:在使用點擊功能後刷新同一頁面上的div

<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> 

打印機形式的輸入法和可打印格如下:

<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查詢文本字幕/滾動條是根據功能執行任務

$(document).ready(function(){ 

所有工作都可以獨立進行。問題在於文本選取框/滾動條在單擊打印按鈕時停止滾動文本。直到頁面刷新,滾動條才能滾動文本。所以我使用html元刷新,但這可能是一個令人討厭的遊客體驗。我也不想在iframe中使用滾動條。

這段時間我已經嘗試了一些基於j查詢和java腳本的解決方案。腳本刷新(只是淡入淡出整個文本塊)div在哪裏滾動是默默的,但實際上不能保持文本滾動。

有沒有什麼好的基於j-query或java腳本的解決方案,可以根據我在上面給出的時間段內解釋的情況靜靜地刷新Scroller的div?

回答

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; 
} 
+0

是的,我知道。只爲了便於理解而這樣寫。謝謝, – 2012-07-11 12:49:10

0

我從你說什麼,這裏的目的是爲了能夠打印只在一定格,而不是整個頁面假設。如果是這種情況,那麼你真的要在這裏極端執行這個功能。

如果你只是想打印一個漂亮的版本的頁面打印(一個沒有菜單等)看看How can I have different CSS when I print or print preview?。該問題將顯示如何使用不同的css集進行打印,因此您可以將display:none;設置爲打印時不想顯示的任何內容。

如果你想只打印一個div,那麼你可以看看jQuery print element plugin。這是你在你的HTML鏈接一個簡單的js文件,然後調用

$([selector]).printElement();

只打印該元素。例如,您可以將您的方法重寫爲:

function printDiv(anyPrintableDiv) { 
    $('#' + anyPrintableDiv).printElement(); 
} 
+0

這真的很奇怪,當我使用github上託管的'jquery.printElement.min.js'插件時,打印功能完美地工作,但是當它在我的服務器上託管時,打印功能不起作用。任何想法爲什麼會發生?請看我的答案。謝謝, – 2012-07-12 12:48:55