ActiveXObject 對象 啟用和返回對自動化對象的引用。此對象僅用於實例化自動化對象,且此對象沒有成員。 警告:此對象為 Microsoft 擴展,僅在 Internet Explorer 中受支持,在 Windows 8.x 應用商店應用中不受支持。 語法: 參數:newObj:必選。Ac ...
ActiveXObject 對象
啟用和返回對自動化對象的引用。
此對象僅用於實例化自動化對象,且此對象沒有成員。
警告:此對象為 Microsoft 擴展,僅在 Internet Explorer 中受支持,在 Windows 8.x 應用商店應用中不受支持。
語法:
newObj = new ActiveXObject(servername.typename[, location])
參數:newObj
:必選。ActiveXObject 分配到的變數名稱。 servername
:必選。提供對象的應用程式的名稱。 typename
:必選。要創建的對象的類型或類。 location
:可選。要在其中創建對象的網路伺服器的名稱。
備註
自動化伺服器至少提供一種對象。 例如,字處理應用程式可能會提供應用程式對象、文檔對象和工具欄對象。
你可以在 HKEY_CLASSES_ROOT 註冊表項中標識宿主 PC 上的 servername.typename
值。 例如,下麵是可在此處找到的幾個值示例,具體取決於安裝的程式:
-
Excel.Application
-
Excel.Chart
-
Scripting.FileSystemObject
-
WScript.Shell
-
Word.Document
註意:
ActiveX
對象可能存在安全問題。 若要使用 ActiveXObject,你可能需要在相關安全區域的 Internet Explorer 中調整安全設置。 例如,對於本地 Intranet 區域,通常需要將自定義設置更改為“對沒有標記為安全的 ActiveX 控制項進行初始化和腳本運行
”。
若要創建自動化對象,請將新的 ActiveXObject 分配給對象變數:
var ExcelApp = new ActiveXObject("Excel.Application"); var ExcelSheet = new ActiveXObject("Excel.Sheet");
此代碼啟動創建對象的應用程式(在此示例中,為 Microsoft Excel 工作表)。 在創建某個對象後,可在代碼中使用已定義的對象變數引用該對象。 在下麵的示例中,使用對象變數 ExcelSheet 和其他 Excel 對象(包括應用程式對象和 ActiveSheet.Cells 集合)來訪問新對象的屬性和方法。
// Make Excel visible through the Application object. ExcelSheet.Application.Visible = true; // Place some text in the first cell of the sheet. ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"; // Save the sheet. ExcelSheet.SaveAs("C:\\TEST.XLS"); // Close Excel with the Quit method on the Application object. ExcelSheet.Application.Quit();
要求
在以下文檔模式中受支持:Quirks、Internet Explorer 6 標準、Internet Explorer 7 標準、Internet Explorer 8 標準、Internet Explorer 9 標準、Internet Explorer 10 標準和 Internet Explorer 11 標準。 在 Windows 8.x 應用商店應用中不受支持。
FileSystemObject 對象
在IE瀏覽器中實現文件的操作功能,還得需要FileSystemobject
對象。
使用FileSystemObject
對象進行編程很簡單,一般要經過如下的步驟: 創建FileSystemObject
對象、應用相關方法、訪問對象相關屬性 。
創建FileSystemObject對象
var fso = new ActiveXObject("Scripting.FileSystemObject");
上述代碼執行後,fso就成為一個FileSystemObject對象實例。
應用相關方法
創建對象實例後,就可以使用對象的相關方法了。比如,使用CreateTextFile
方法創建一個文本文件:
var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.createtextfile("c:\myjstest.txt",true");
訪問對象相關屬性
要訪問對象的相關屬性,首先要建立指向對象的句柄,這就要通過get系列方法實現:GetDrive
負責獲取驅動器信息,GetFolder
負責獲取文件夾信息,GetFile
負責獲取文件信息。比如,指向下麵的代碼後,f1就成為指向文件c: est.txt的句柄:
var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.GetFile("c:\myjstest.txt");
然後,使用f1訪問對象的相關屬性。比如:
var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.GetFile("c:\myjstest.txt"); alert("File last modified: " + f1.DateLastModified);
但有一點請註意:對於使用create方法建立的對象,就不必再使用get方法獲取對象句柄了,這時直接使用create方法建立的句柄名稱就可以:
var fso = new ActiveXObject("Scripting.FileSystemObject"); var f1 = fso.createtextfile("c:\myjstest.txt",true"); alert("File last modified: " + f1.DateLastModified);
實例
1.獲取上傳文件的大小
html代碼:
<input type="file" id="filePath" onchange="getFileSize(this)"/>
js代碼:
//相容IE9低版本獲取文件的大小 function getFileSize(obj){ var filesize; if(obj.files){ filesize = obj.files[0].size; }else{ try{ var path,fso; path = document.getElementById('filePath').value; fso = new ActiveXObject("Scripting.FileSystemObject"); filesize = fso.GetFile(path).size; } catch(e){ //在IE9及低版本瀏覽器,如果不容許ActiveX控制項與頁面交互,點擊了否,就無法獲取size console.log(e.message); //Automation 伺服器不能創建對象 filesize = 'error'; //無法獲取 } } return filesize; }
2.限制上傳文件的類型
如果是高版本瀏覽器,一般在HTML代碼中寫就能實現,如:
<input type="file" name="filePath" accept=".jpg,.jpeg,.doc,.docxs,.pdf">
如果限制上傳文件為圖片類型,如下:
<input type="file" class="file" value="上傳" accept="image/*"/>
但是在其它低版本瀏覽器就不管用了,需要js來判斷。
html代碼:
<input type="file" id="filePath" onchange="limitTypes()"/>
js代碼:
/* 通過擴展名,檢驗文件格式。 *@parma filePath{string} 文件路徑 *@parma acceptFormat{Array} 允許的文件類型 *@result 返回值{Boolen}:true or false */ function checkFormat(filePath,acceptFormat){ var resultBool= false, ex = filePath.substring(filePath.lastIndexOf('.') + 1); ex = ex.toLowerCase(); for(var i = 0; i < acceptFormat.length; i++){ if(acceptFormat[i] == ex){ resultBool = true; break; } } return resultBool; }; function limitTypes(){ var obj = document.getElementById('filePath'); var path = obj.value; var result = checkFormat(path,['bmp','jpg','jpeg','png']); if(!result){ alert('上傳類型錯誤,請重新上傳'); obj.value = ''; } }
註:當然這個實例2在這兒沒有用到上面的知識,只是根據實例1聯想到了。
參考
ActiveXObject 對象 (JavaScript):https://msdn.microsoft.com/library/7sw4ddf8(v=vs.94).aspx
JS、ActiveXObject、Scripting.FileSystemObject:http://www.cnblogs.com/dingjiaoyang/p/5831056.html