獲取打印機列表可以放在onload事件里,如過當前是使用的c-lodop,由於websoket鏈接需要時間,一進入頁面可能會報錯,被准備好或網頁沒下載完成等,也可以在點擊事件里讓用戶獲取打印機。
之前寫過兩個在頁面選擇打印機的博文:
Lodop在頁面獲取打印機列表 選擇打印機預覽
C-Lodop獲取打印機列表Create_Printer_List(c-lodop獨有的方法,集中打印,AO打印可以用這個方法)
都是早期寫的博文,搬運到新博客的,沒有代碼,這里重新介紹一下第一個博文的那種lodop和c-lodop通用的方法,選擇打印機也可以不在頁面加載的時候獲取,點擊后獲取打印機列表然后選擇。
正常情況下點擊一次,獲取到打印機列表,用戶就可以選擇打印機了,但是用戶也可能手滑或者點了多次等原因,為了避免重新裝載打印機到列表里,可以判斷為不為空的時候就不再裝載了。
在onload理論原來寫的這個獲取打印機列表方法:(由於之前寫過,不再放這個的圖)后面的有按鈕獲取的圖。其實和按鈕獲取的方法是一樣的,就是一個在onload理論,一個按鈕點擊獲取。
代碼:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>WEB打印控件LODOP</title> <script language="javascript" src="LodopFuncs.js"></script> </head> 選擇打印機:<select id="PrinterList" size="1"></select> <a href="javascript:prn1_preview()">打印預覽</a><br> <script language="javascript" type="text/javascript"> var LODOP; //聲明為全局變量 window.onload=function(){creatPrintList();} function creatPrintList(){ LODOP=getLodop(); var iPrinterCount=LODOP.GET_PRINTER_COUNT(); for(var i=0;i<iPrinterCount;i++){ var option=document.createElement('option'); option.innerHTML=LODOP.GET_PRINTER_NAME(i); option.value=i; document.getElementById('PrinterList').appendChild(option); }; }; function prn1_preview() { LODOP=getLodop(); LODOP.PRINT_INIT(""); LODOP.SET_PRINTER_INDEX(document.getElementById("PrinterList").value); LODOP.SET_PRINT_PAGESIZE(1,300,500,""); LODOP.ADD_PRINT_TEXT(4,62,150,40,"文字"); LODOP.PREVIEW(); }; </script> </body>
在點擊按鈕里獲取打印機列表:判斷為空,就不再重新裝載。
此外在實際應用的時候,考慮到用戶可能的操作,都需要加一些判斷,如前面的很多在文本框填寫,然后打印的博文,都需要判斷是否為空,用戶也可能什么也不填寫就打印等。
代碼:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>WEB打印控件LODOP</title> <script language="javascript" src="LodopFuncs.js"></script> <style> </style> </head> <input type="button" value="選擇打印機" onclick="creatPrintList()" > <select id="PrinterList" size="1" style="margin-top:10px;"></select> <input type="button" value="選擇打印機" onclick="creatPrintList2()" > <select id="PrinterList2" size="1" style="margin-top:10px;"></select> <script language="javascript" type="text/javascript"> var LODOP; //聲明為全局變量 function creatPrintList(){ LODOP=getLodop(); var iPrinterCount=LODOP.GET_PRINTER_COUNT(); for(var i=0;i<iPrinterCount;i++){ var option=document.createElement('option'); option.innerHTML=LODOP.GET_PRINTER_NAME(i); option.value=i; document.getElementById('PrinterList').appendChild(option); }; document.getElementById('PrinterList').style.display='block'; }; function creatPrintList2(){ if (document.getElementById('PrinterList2').innerHTML!="") return; //點第二次以上,在列表已經填充不為空情況下,不再執行后面的代碼,直接返回,避免重新裝載打印機。 LODOP=getLodop(); var iPrinterCount=LODOP.GET_PRINTER_COUNT(); for(var i=0;i<iPrinterCount;i++){ var option=document.createElement('option'); option.innerHTML=LODOP.GET_PRINTER_NAME(i); option.value=i; document.getElementById('PrinterList2').appendChild(option); }; document.getElementById('PrinterList2').style.display='block'; }; function prn1_preview() { LODOP=getLodop(); LODOP.PRINT_INIT(""); LODOP.SET_PRINTER_INDEX(document.getElementById("PrinterList").value); LODOP.SET_PRINT_PAGESIZE(1,300,500,""); LODOP.ADD_PRINT_TEXT(4,62,150,40,"文字"); LODOP.PREVIEW(); }; </script> </body>
圖示: