日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

获取磁盘信息并扫描是否连接移动磁盘之JS版

發(fā)布時(shí)間:2024/3/26 javascript 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取磁盘信息并扫描是否连接移动磁盘之JS版 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

昨天弄了一天“掃描U盤是否連接到電腦”的功能,折騰了一天出了個(gè)java版和js版,這里記錄下JS版本。

先說說思路:從瀏覽器的地址欄打開網(wǎng)頁之后,通過onload事件調(diào)用ActiveXObject判斷U盤是否連接到電腦,若是連接了獲取信息顯示到table中,若是沒有每隔2秒調(diào)用一次事件進(jìn)行獲取,獲取到之后清空計(jì)時(shí)器并將U盤信息顯示到頁面。PS:全程只獲取一個(gè)U盤的信息。

?

1、頁面基本結(jié)構(gòu):

<body οnlοad="checkDisk();"><table width="100%" border="0" cellspacing="0" cellpadding="0" class="ztb_l" id="upanTable"><tr><td>盤符路徑(Path)</td><td>文件系統(tǒng)類型(FileSystem)</td><td>驅(qū)動(dòng)器類型(DriveType)</td><td>驅(qū)動(dòng)器對(duì)象的字母(DriveLetter)</td><td>驅(qū)動(dòng)器是否準(zhǔn)備好或是否損壞(IsReady)</td><td>卷標(biāo)名(VolumeName)</td><td>驅(qū)動(dòng)器對(duì)象的跟文件夾(RootFolder)</td><td>可用容量大小(AvailableSpace)</td><td>總空間容量大小(TotalSize)</td></tr></table> </body>

2、JS查詢:

var tt = 2 *1000;//2秒掃描一次 var interval=null; /*** 該方法用來檢測(cè)U盤是否存在,若是存在則顯示在頁面中,若是不存在則掃描識(shí)別直至電腦連接上U盤* @param flag:1-移動(dòng)磁盤 2-本地磁盤 非1和2其他磁盤信息,若有多個(gè)磁盤頁面只顯示一個(gè)磁盤信息*/ function checkDisk(){//diskArr = getDiskInfo(3,1);//查詢所有磁盤信息并返回結(jié)果集diskArr = getDiskInfo(1,1);//查詢所有可移動(dòng)磁盤信息并返回結(jié)果集if(diskArr.length>0){//說明連接了U盤//appendDiskInfoToTable(diskArr);//顯示全部appendDiskInfoToTable(diskArr[0]);//取其中一個(gè)顯示到頁面/*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{//沒有連接,那么循環(huán)查找并直接將結(jié)果顯示到頁面interval = window.setInterval("getDiskInfo(1,3)",tt);//重復(fù)加載} }/*** 該方法用來獲取所有磁盤的基本信息* @param flag:獲取的磁盤類型信息:1-獲取可移動(dòng)磁盤信息 2-獲取本地磁盤信息 默認(rèn)獲取所有磁盤信息* @param result:處理結(jié)果 1-返回結(jié)果集 2-直接將所有結(jié)果集顯示到頁面上 3-將第一個(gè)結(jié)果集顯示到頁面上* @return array:集合* */ function getDiskInfo(flag,result){var diskArr=new Array();//初始化if(flag==null || flag==undefined) flag=3;if(result==null || result==undefined) result=1;//默認(rèn)返回結(jié)果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();// 獲取每個(gè)盤符的基本信息switch(flag){case 1:{//移動(dòng)磁盤if(x.DriveType==1){diskArr.push(x);}break;}case 2:{//獲取本地磁盤if(x.DriveType==2){//固定磁盤diskArr.push(x);}break;}default:{//全部磁盤diskArr.push(x);break;}}}//處理結(jié)果switch(result){case 2:{//將所有結(jié)果返回到頁面if(diskArr.length>0){clearInterval(interval);//清除計(jì)時(shí)器appendDiskInfoToTable(diskArr);}break;}case 3:{//將第一個(gè)結(jié)果集顯示到頁面上if(diskArr.length>0){appendDiskInfoToTable(diskArr[0]);clearInterval(interval);//清除計(jì)時(shí)器 }break;}}return diskArr; }/** *獲取磁盤基本信息拼接到table中 *@param diskArray:進(jìn)行添加的磁盤集合 **/ function appendDiskInfoToTable(diskArray){var tableHtml="";if(isArray(diskArray)){//是數(shù)組for(var i=0;i<diskArray.length;i++){tableHtml +=addTrHtml(diskArray[i]);// 獲取每個(gè)盤符的基本信息}}else{//不是數(shù)組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>"//可用空間大小(與剩余空間大小結(jié)果相同)//+"<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 默認(rèn)為GB* @param fix:保留的小數(shù)位 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);//保留位數(shù)+單位return value; }/*** 該方法用來獲取單元名稱* @param flag:1-GB 2-MB 3-KB 4-B 默認(rèn)為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 默認(rèn)為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,默認(rèn)值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; }/*** 判斷是不是數(shù)組* **/ var isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; };

?3、DriverType 0-5的范圍的意思:

Unknown 0 無法確定驅(qū)動(dòng)器類型。
Removable 1 可移動(dòng)媒體驅(qū)動(dòng)器,包括軟盤驅(qū)動(dòng)器和其他多種存儲(chǔ)設(shè)備。
Fixed 2 固定(不可移動(dòng))媒體驅(qū)動(dòng)器,包括所有硬盤驅(qū)動(dòng)器(包括可移動(dòng)的硬盤驅(qū)動(dòng)器)。
Remote 3 網(wǎng)絡(luò)驅(qū)動(dòng)器,包括網(wǎng)絡(luò)上任何位置的共享驅(qū)動(dòng)器。
CDROM 4 CD-ROM 驅(qū)動(dòng)器,不區(qū)分只讀和可讀寫的 CD-ROM 驅(qū)動(dòng)器。
RAMDisk 5 RAM 磁盤,在本地計(jì)算機(jī)中占用一塊“隨機(jī)存取內(nèi)存”(RAM) 虛擬為磁盤驅(qū)動(dòng)器。

總結(jié)

以上是生活随笔為你收集整理的获取磁盘信息并扫描是否连接移动磁盘之JS版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。