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

来源:http://www.cnblogs.com/moqiutao/archive/2017/07/28/7253056.html
-Advertisement-
Play Games

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 值。 例如,下麵是可在此處找到的幾個值示例,具體取決於安裝的程式:

  1. Excel.Application

  2. Excel.Chart

  3. Scripting.FileSystemObject

  4. WScript.Shell

  5. 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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • html代碼: <input type="button" id="J_selectImage" value="圖片上傳" /><div id="J_imageView"><?php foreach($imgs as $row):?><div class="img_view"><img class=' ...
  • html代碼: <p><input type="hidden" id="url1" name="IDCardPicture1" value="" /> <input type="button" id="image1" value="選擇圖片" style="width: 150px;height:  ...
  • 對JQuery對象的屬性,特性以及數據的操作: 特性(attributes)和屬性(properties): 特性的值是字元串。 屬性的值不光為字元串,而且可以為布爾值,對象,數字。 元素的屬性和特性有動態鏈接,如果特性在dom對象中存在,其中一個發生變化,另一個也會變化 如果特性是本來就在dom對 ...
  • 重新學習了一遍js對象,但方法的靈活使用需要代到案例中學習,共勉 ...
  • 複合選擇器就是兩個或多個基本選擇器,通過不同方式連接而成的選擇器,主要包括“交集”選擇器、“並集”選擇器、“後代”選擇器。 交集選擇器 “交集”複合選擇器是由兩個選擇器直接連接構成,其結果是選中二者各自元素範圍的交集。其中第一個必須是標記選擇器,第二個必須是類別選擇器或者ID選擇器。這兩個選擇器之間 ...
  • [1]引入 [2]迭代器 [3]生成器 [4]可迭代對象 [5]內建迭代器 [6]高級迭代器 [7]非同步任務執行 ...
  • 前言: 做小程式有一段時間了,總結一下做過的技術點,特此貢獻給小伙伴們!項目中,有圖片存儲、視頻存儲、錄音存儲這三個需要雲對接存儲。 一、圖片/視頻/錄音上傳七牛對接 準備工作: a、你要有一個七牛賬號,實名認證後,在七牛的個人中心,有個秘鑰管理-裡面有一對秘鑰,是上傳必須的。這對秘鑰,配置在後端, ...
  • 一、概念 數組是值的有序集合。每個值叫做一個元素,兒每個元素值數組中有一個位置,以數字表示,稱為索引。數組的元素可以是任意類型,並且同一個數組中的不同元素也可能有不同的類型。 二、創建數組 1、常規方式: 2、簡介方式 3、字面方式 三、數組的讀寫 四、數組的長度 五、數組元素的添加和刪除 最簡單的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...