自己負責的模塊需要有個試卷打印的功能,需要將網頁特定范圍內的內容打印出來,所以選擇了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);