當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
获取磁盘信息并扫描是否连接移动磁盘之JS版
生活随笔
收集整理的這篇文章主要介紹了
获取磁盘信息并扫描是否连接移动磁盘之JS版
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天弄了一天“掃描U盤是否連接到電腦”的功能,折騰了一天出了個java版和js版,這里記錄下JS版本。
先說說思路:從瀏覽器的地址欄打開網頁之后,通過onload事件調用ActiveXObject判斷U盤是否連接到電腦,若是連接了獲取信息顯示到table中,若是沒有每隔2秒調用一次事件進行獲取,獲取到之后清空計時器并將U盤信息顯示到頁面。PS:全程只獲取一個U盤的信息。
?
1、頁面基本結構:
<body οnlοad="checkDisk();"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="ztb_l" id="upanTable"><tr><td>盤符路徑(Path)</td><td>文件系統類型(FileSystem)</td><td>驅動器類型(DriveType)</td><td>驅動器對象的字母(DriveLetter)</td><td>驅動器是否準備好或是否損壞(IsReady)</td><td>卷標名(VolumeName)</td><td>驅動器對象的跟文件夾(RootFolder)</td><td>可用容量大小(AvailableSpace)</td><td>總空間容量大小(TotalSize)</td></tr></table> </body>2、JS查詢:
var tt = 2 *1000;//2秒掃描一次 var interval=null; /*** 該方法用來檢測U盤是否存在,若是存在則顯示在頁面中,若是不存在則掃描識別直至電腦連接上U盤* @param flag:1-移動磁盤 2-本地磁盤 非1和2其他磁盤信息,若有多個磁盤頁面只顯示一個磁盤信息*/ function checkDisk(){//diskArr = getDiskInfo(3,1);//查詢所有磁盤信息并返回結果集diskArr = getDiskInfo(1,1);//查詢所有可移動磁盤信息并返回結果集if(diskArr.length>0){//說明連接了U盤//appendDiskInfoToTable(diskArr);//顯示全部appendDiskInfoToTable(diskArr[0]);//取其中一個顯示到頁面/*var x = diskArr[0];var diskInfo=x.Path+"\n"+x.FileSystem+"\n"+x.DriveType+"\n"+x.DriveLetter+"\n"+x.IsReady+"\n"+x.VolumeName+"\n"+x.RootFolder+"\n"+getDiskSpace(x.AvailableSpace,1,2)+"\n"+getDiskSpace(x.TotalSize,1,2);alert(diskInfo);*/}else{//沒有連接,那么循環查找并直接將結果顯示到頁面interval = window.setInterval("getDiskInfo(1,3)",tt);//重復加載} }/*** 該方法用來獲取所有磁盤的基本信息* @param flag:獲取的磁盤類型信息:1-獲取可移動磁盤信息 2-獲取本地磁盤信息 默認獲取所有磁盤信息* @param result:處理結果 1-返回結果集 2-直接將所有結果集顯示到頁面上 3-將第一個結果集顯示到頁面上* @return array:集合* */ function getDiskInfo(flag,result){var diskArr=new Array();//初始化if(flag==null || flag==undefined) flag=3;if(result==null || result==undefined) result=1;//默認返回結果var e, x;var fso = new ActiveXObject("Scripting.FileSystemObject");var bfResult = false;e = new Enumerator(fso.Drives);flag = parseInt(flag,10);result = parseInt(result,10);for (; !e.atEnd(); e.moveNext()) {x = e.item();// 獲取每個盤符的基本信息switch(flag){case 1:{//移動磁盤if(x.DriveType==1){diskArr.push(x);}break;}case 2:{//獲取本地磁盤if(x.DriveType==2){//固定磁盤diskArr.push(x);}break;}default:{//全部磁盤diskArr.push(x);break;}}}//處理結果switch(result){case 2:{//將所有結果返回到頁面if(diskArr.length>0){clearInterval(interval);//清除計時器appendDiskInfoToTable(diskArr);}break;}case 3:{//將第一個結果集顯示到頁面上if(diskArr.length>0){appendDiskInfoToTable(diskArr[0]);clearInterval(interval);//清除計時器 }break;}}return diskArr; }/** *獲取磁盤基本信息拼接到table中 *@param diskArray:進行添加的磁盤集合 **/ function appendDiskInfoToTable(diskArray){var tableHtml="";if(isArray(diskArray)){//是數組for(var i=0;i<diskArray.length;i++){tableHtml +=addTrHtml(diskArray[i]);// 獲取每個盤符的基本信息}}else{//不是數組tableHtml = addTrHtml(diskArray);}$("#upanTable").append(tableHtml); }function addTrHtml(diskArray){var trHtml="";trHtml +="<tr>"+"<td>"+diskArray.Path+"</td>"+"<td>"+diskArray.FileSystem+"</td>"+"<td>"+diskArray.DriveType+"</td>"+"<td>"+diskArray.DriveLetter+"</td>"+"<td>"+diskArray.IsReady+"</td>"+"<td>"+diskArray.VolumeName+"</td>"+"<td>"+diskArray.RootFolder+"</td>"+"<td>"+getDiskSpace(diskArray.AvailableSpace,1,2)+"</td>"//可用空間大小(與剩余空間大小結果相同)//+"<td>"+getDiskSpace(diskArray.FreeSpace)+"</td>"//剩余空間大小+"<td>"+getDiskSpace(diskArray.TotalSize,1,2)+"</td>"+"</tr>"; return trHtml; }/*** 該方法用來格式化U盤顯示信息* @param space:磁盤空間容量,以byte為單位* @param flag:1-GB 2-MB 3-KB 4-B 默認為GB* @param fix:保留的小數位 1-###0.## 2-###0.0#* @return 值+單位* **/ function getDiskSpace(space,flag,fix){var unit = getDiskUnit(flag);var value = space/unit;value = value.toFixed(fix)+getCell(flag);//保留位數+單位return value; }/*** 該方法用來獲取單元名稱* @param flag:1-GB 2-MB 3-KB 4-B 默認為GB* **/ function getCell(flag){flag = parseInt(flag,10);var cell = "GB";switch(flag){case 2:{cell = "MB";;// MBbreak;}case 3:{cell = "KB";;// KBbreak;}case 4:{cell = "B";;// Bbreak;}default:cell = "GB";;// GBbreak;}return cell; } /*** 該方法用來獲取磁盤容量顯示方式:1-GB 2-MB 3-KB 4-B 默認為GB* @return 磁盤單位,如GB:1024*1024*1024 MB:1024*1024 KB為:1024 B為:1**/ function getDiskUnit(flag){flag = parseInt(flag,10);var unit = 1024 * 1024 * 1024;// 將磁盤格式化為GB,默認值switch(flag){case 2:{unit = 1024 * 1024;// MBbreak;}case 3:{unit = 1024;// KBbreak;}case 4:{unit = 1;// Bbreak;}default:unit = 1024 * 1024 * 1024;// GBbreak;}return unit; }/*** 判斷是不是數組* **/ var isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; };?3、DriverType 0-5的范圍的意思:
Unknown 0 無法確定驅動器類型。
Removable 1 可移動媒體驅動器,包括軟盤驅動器和其他多種存儲設備。
Fixed 2 固定(不可移動)媒體驅動器,包括所有硬盤驅動器(包括可移動的硬盤驅動器)。
Remote 3 網絡驅動器,包括網絡上任何位置的共享驅動器。
CDROM 4 CD-ROM 驅動器,不區分只讀和可讀寫的 CD-ROM 驅動器。
RAMDisk 5 RAM 磁盤,在本地計算機中占用一塊“隨機存取內存”(RAM) 虛擬為磁盤驅動器。
總結
以上是生活随笔為你收集整理的获取磁盘信息并扫描是否连接移动磁盘之JS版的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: intel X3100 打开3D特效
- 下一篇: 联想服务器硬盘灯全部闪烁,服务器故障处理