JavaScript 是一門腳本語(yǔ)言,可以在網(wǎng)頁(yè)中加入動(dòng)態(tài)的效果和交互性,但 JavaScript 不能直接調(diào)用操作系統(tǒng)中的 DLL。不過(guò),通過(guò)瀏覽器插件或 ActiveX 控件,可以在 JavaScript 中引用 DLL 函數(shù)庫(kù),實(shí)現(xiàn) Windows API 的調(diào)用,從而達(dá)到實(shí)現(xiàn)操作系統(tǒng)級(jí)別功能的目的。
舉例來(lái)說(shuō),比如我們想在網(wǎng)頁(yè)中調(diào)用打印機(jī)功能,JavaScript 無(wú)法直接調(diào)用操作系統(tǒng)中的打印機(jī)驅(qū)動(dòng)程序。但如果通過(guò) ActiveX 控件,就能調(diào)用打印機(jī) DLL,指定要打印的文件和打印機(jī),進(jìn)而完成打印操作。
下面演示通過(guò) ActiveX 控件調(diào)用 DLL 的簡(jiǎn)單過(guò)程。
首先,新建一個(gè) HTML 頁(yè)面,在代碼中創(chuàng)建一個(gè)按鈕,用于觸發(fā)打印操作:
上面代碼中,我們通過(guò)
不過(guò),需要注意的是,在不同瀏覽器、不同操作系統(tǒng)下,ActiveX 控件的支持度是不同的,而且,ActiveX 控件需要用戶授權(quán)才能運(yùn)行,存在一定的安全風(fēng)險(xiǎn),因此在實(shí)際應(yīng)用中要格外小心。
以上就是 JavaScript 調(diào)用 DLL 的簡(jiǎn)單介紹及演示,通過(guò) ActiveX 控件的方式,JavaScript 可以調(diào)用 DLL 函數(shù)庫(kù),實(shí)現(xiàn)一些操作系統(tǒng)級(jí)別的功能。
舉例來(lái)說(shuō),比如我們想在網(wǎng)頁(yè)中調(diào)用打印機(jī)功能,JavaScript 無(wú)法直接調(diào)用操作系統(tǒng)中的打印機(jī)驅(qū)動(dòng)程序。但如果通過(guò) ActiveX 控件,就能調(diào)用打印機(jī) DLL,指定要打印的文件和打印機(jī),進(jìn)而完成打印操作。
下面演示通過(guò) ActiveX 控件調(diào)用 DLL 的簡(jiǎn)單過(guò)程。
首先,新建一個(gè) HTML 頁(yè)面,在代碼中創(chuàng)建一個(gè)按鈕,用于觸發(fā)打印操作:
<body> <button onclick="printDoc()">打印</button> </body>接下來(lái),在 JavaScript 中定義一個(gè)
printDoc()
方法。該方法中,通過(guò)new ActiveXObject()
創(chuàng)建 ADODB.Stream 對(duì)象,用于讀寫數(shù)據(jù)流;通過(guò)invoke()
方法調(diào)用 DLL 中的打印函數(shù),并將打印結(jié)果寫入 ADODB.Stream;最后,設(shè)置打印機(jī)的一些參數(shù),如紙張大小、橫縱向、邊距等,調(diào)用 ADODB.Stream 的SaveToFile()
方法打印文件。<script type="text/javascript"> function printDoc() { try { var printerApp = new ActiveXObject("PrinterApp.Printer"); var formatDoc = new ActiveXObject("MSXML2.DOMDocument"); formatDoc.loadXML("<format></format>"); <br> // 調(diào)用 DLL 中的打印函數(shù),打印文件 var result = printerApp.print(formatDoc.xml); <br> // 將打印結(jié)果寫入 ADODB.Stream 中 var fileStream = new ActiveXObject("ADODB.Stream"); fileStream.Type = 1; fileStream.Mode = 3; fileStream.Open(); fileStream.WriteText(result); fileStream.SaveToFile("C:\\Temp\\print.txt", 2); // 打印文件存放路徑 fileStream.Close(); <br> // 設(shè)置打印機(jī)相關(guān)參數(shù) printerApp.PaperSize = 9; // A4 紙 printerApp.Orientation = 2; // 縱向打印 printerApp.TopMargin = 10; printerApp.LeftMargin = 10; <br> // 調(diào)用 ADODB.Stream 的 SaveToFile 方法,打印文件 fileStream = new ActiveXObject("ADODB.Stream"); fileStream.Type = 1; fileStream.Mode = 3; fileStream.Open(); fileStream.LoadFromFile("C:\\Temp\\print.txt"); printerApp.PrintRawDocument(fileStream.Read(), null); fileStream.Close(); } catch (ex) { alert("打印失敗!"); } } </script>
上面代碼中,我們通過(guò)
new ActiveXObject()
方法創(chuàng)建了 PrinterApp.Printer、MSXML2.DOMDocument 和 ADODB.Stream 三個(gè)對(duì)象來(lái)實(shí)現(xiàn) DLL 的調(diào)用和文件讀寫。不過(guò),需要注意的是,在不同瀏覽器、不同操作系統(tǒng)下,ActiveX 控件的支持度是不同的,而且,ActiveX 控件需要用戶授權(quán)才能運(yùn)行,存在一定的安全風(fēng)險(xiǎn),因此在實(shí)際應(yīng)用中要格外小心。
以上就是 JavaScript 調(diào)用 DLL 的簡(jiǎn)單介紹及演示,通過(guò) ActiveX 控件的方式,JavaScript 可以調(diào)用 DLL 函數(shù)庫(kù),實(shí)現(xiàn)一些操作系統(tǒng)級(jí)別的功能。