js與IE瀏覽器的ActiveXObject對象以及FileSystemobject的應用擴充

來源:互聯網
上載者:User

標籤:dex   http   asc   types   大小   key   伺服器   .sh   磁碟機   

ActiveXObject 對象

啟用和返回對Automation 物件的引用。
此對象僅用於執行個體化Automation 物件,且此對象沒有成員。

警告:此對象為 Microsoft 擴充,僅在 Internet Explorer 中受支援,在 Windows 8.x 市集應用中不受支援。

文法:

newObj = new ActiveXObject(servername.typename[, location])

參數:
newObj:必選。ActiveXObject 分配到的變數名稱。 
servername:必選。提供對象的應用程式的名稱。 
typename:必選。要建立的對象的類型或類。 
location:可選。要在其中建立對象的網路伺服器的名稱。

備忘
Automation 伺服程式至少提供一種對象。 例如,文書處理應用程式可能會提供應用程式物件、文檔對象和工具列對象。

你可以在 HKEY_CLASSES_ROOT 登錄機碼中標識宿主 PC 上的 servername.typename 值。 例如,下面是可在此處找到的幾個值樣本,具體取決於安裝的程式:

  1. Excel.Application

  2. Excel.Chart

  3. Scripting.FileSystemObject

  4. WScript.Shell

  5. Word.Document

注意:ActiveX 對象可能存在安全問題。 若要使用 ActiveXObject,你可能需要在相關安全區域的 Internet Explorer 中調整安全設定。 例如,對於本地 Intranet 地區,通常需要將自訂設定更改為“對沒有標記為安全的 ActiveX 控制項進行初始化和指令碼運行”。

若要建立Automation 物件,請將新的 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

js與IE瀏覽器的ActiveXObject對象以及FileSystemobject的應用擴充

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.