2016-08-24 97 views
0

我有兩個功能,打印element和打印page打印使用jQuery

function printPage(page,redirect,dontPrint=false) 
{ 
    if($('.printThis').length == 0) 
    { 
     $('body').append('<div class="printThis hide"></div>'); 
    } 
    $('.printThis').load(page,function(){ 
     printContent($('.printThis'),redirect,dontPrint); 
     $('.printThis').remove(); 
    }); 
} 

function printContent(div_id,redirect,dontPrint=false) 
{ 
    var DocumentContainer = div_id.html(); 
    var html = '<html><head>'+ 
        '<link href="'+tmpl+'assets/css/print.css" rel="stylesheet" type="text/css" />'+ 
        '</head><body style="background:#ffffff;">'+ 
        DocumentContainer+ 
        '</body></html>'; 
    var WindowObject = window.open("", "PrintWindow", 
    "width=750,height=650,top=50,left=50,toolbars=no,scrollbars=yes,status=no,resizable=yes"); 
    WindowObject.document.write(html); 
    WindowObject.document.close(); 
    WindowObject.focus(); 
    setTimeout(function() { 
     if(!dontPrint) 
     { 
      WindowObject.print(); 
      WindowObject.close(); 
     } 
     if(redirect) 
     window.location.assign(redirect); 
    }, 50); 
} 

形式,我把一個按鈕,在任何網頁上點擊功能打印頁面

<button class="btn btn-primary btn-xs" onclick="printPage('/myproject/prints/bill/sales/5','')">Print Bill</button> 

當用戶點擊另一個頁面該按鈕爲first time它彈出一個blank page !!!! 任何時候,他再次點擊按鈕,它工作正常

你能幫助嗎?

回答

1

爲了解決您的問題,您需要添加此到打印的HTML代碼:

<script> 
    window.onload = function(){ 
     window.print(); 
    } 
</script> 

這將在內容全部加載並呈現後立即開始打印過程。沒有更多的超時!


外面你的答案範圍:

切勿使用彈出窗口(即說window.open行)。很多人阻止這些(我深深地感謝那些發明彈出式窗口攔截器的人),甚至在某些設備上甚至可能無法工作。

你可以做的是創建一個並將內容轉儲到它。

有點兒像這樣:

<a href="/myproject/prints/bill/sales/5" target="print" class="btn btn-primary btn-xs">Print Bill</button> 
<iframe id="print" name="print" style="display:none;"></iframe> 

當你點擊鏈接,它會打開內頁。由於您正在生成的輸出,因此您可以將引用的JavaScript代碼添加到輸出中。

這將爲您節省大量的工作並保持儘可能的兼容性。更不用說容易了!

-2

好吧,我發現我的問題

它的時間到我的網頁完全加載,所以我增加延遲700,它工作正常 謝謝

+0

爲什麼這樣?您可以將''添加到您的iframe中,並且它可以工作。 –

+0

避免使用像這樣的超時:用戶具有所有不同類型的連接。使用'onload'函數來完成你正在尋找的東西。 – FrankerZ

+0

如何在'.load'中使用'onload'函數,我打電話給另一個頁面?和'沒有iframe' –