1. 程式人生 > >jqprint的網頁列印,部分圖片無法載入處理

jqprint的網頁列印,部分圖片無法載入處理

本文轉自:http://www.cnblogs.com/sanqianjin/archive/2015/09/24/4836643.html

自己負責的模組需要有個試卷列印的功能,需要將網頁特定範圍內的內容打印出來,所以選擇了jquery.jqprint指令碼

用起來也非常簡單。

    //列印
    $("#printPage").jqprint({
        debug: false,//如果是true則可以顯示iframe檢視效果,預設是false 
        importCSS: true,//true表示引進原來的頁面的css,預設是true。
        printContainer: true,//表示如果原來選擇的物件必須被納入列印,預設是true。
        operaSupport: true///表示如果外掛也必須支援歌opera瀏覽器,預設是true。
    });

但是遇到一個問題,就是在頁面有很多圖片的時候,用谷歌瀏覽器列印預覽的時候,預覽的頁面不會顯示所有的圖片,這樣打印出來也沒有顯示圖片。

查來查去,只能是jqprint指令碼的問題,最後多次測試,發現將腳本里面

setTimeout( function() { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } }, 1000);

的時間從1000調至3000就會顯示所有圖片。

雖說找到了原因,程式跑通了,但是原理還是不知道,希望有人能看到這篇隨筆來指點一下。

我猜應該是列印預覽也是慢慢載入的,如果給的時間多的話,圖片在這個時間能加載出來,就會在列印預覽時出現。

這個問題還是沒有警醒的看,其實設定成3000還是不能應對所有情況。應該按照列印試卷的頁數來算,這個計時的時間就是頁數×200。這樣就足夠了

setTimeout(function () { (opt.operaSupport && $.browser.opera ? tab : $iframe[0].contentWindow).print(); if (tab) { tab.close(); } LoadingEnd(); }, pagenumber * 100 > 2000 ? pagenumber * 100 : 2000);