js与IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展

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

时间: 2024-10-29 19:13:29

js与IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展的相关文章

js怎么判断浏览器类型

<script type="text/javascript"> function isIE(){ return navigator.appName.indexOf("Microsoft Internet Explorer")!=-1 && document.all; } function isIE6() { return navigator.userAgent.split(";")[1].toLowerCase().i

JS获取当前浏览器的类型

<script type=“text/javascript”> function isIE(){return navigator.appName.indexOf(“Microsoft Internet Explorer”)!=-1 && document.all;} function isIE6() {return navigator.userAgent.split(“;”)[1].toLowerCase().indexOf(“msie 6.0″)==“-1″?false:tr

JS入门之ActiveXObject对象(转载)

JS入门之ActiveXObject对象 此对象提供自动化对象的接口.   function ActiveXObject(ProgID : String [, location : String]) 参数 ProgID 必选.形式为"serverName.typeName"的字符串,其中 serverName 是提供对象的应用程序的名称,typeName 是要创建的对象的类型或类. location 可选项.要在其中创建对象的网络访问器的名称. 备注 通常,自动化服务器会提供至少一种对

JS 事件(4)——跨浏览器的事件对象

跨浏览器的事件对象详解 封装事件对象 1 var event_util = { 2 //添加事件 3 addHandler: function(element, type, handler) { 4 if(element.addEventListener) { 5 element.addEventListener(type, handler, false); 6 } else if(element.attachEvent) { 7 element.attachEvent("on" +

js事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象

事件对象    在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息.包括导致事件的元素.事件的类型,以及其他与特定事件相关的信息.例如,鼠标操作导致的事件对象中,会包含鼠标位置的信息,而键盘操作导致的事件对象中,会包含与按下的键有关的信息.所有浏览器对象都支持event对象,但支持方式不同. DOM中的事件对象 兼容DOM的浏览器会将一个event对象传入到事件处理程序中.无论指定事件处理程序时使用什么方法(DOM0级或DOM2级),都会传入event

js 键盘移动div、img对象

1 <html> 2 <script type="text/javascript"> 3 4 var EXtype=""; 5 var len=5; //步长 6 var level=1;//变速倍数 7 var sprite;//div img 或者sprite,移动目标 8 9 //检测浏览器版本 函数 10 function getExplorerVersion(){ 11 12 var Sys = {};//js 所谓的面向对象 对象

js操作IE浏览器弹出浏览文件夹

如图所示: 可以返回目录路径. 操作如下: function BrowseFolder(){ try{ var Message = "请选择文件夹"; //选择框提示信息 var Shell = new ActiveXObject( "Shell.Application" ); var Folder = Shell.BrowseForFolder(0,Message,0x0040,0x11);//起始目录为:我的电脑 //var Folder = Shell.Bro

JS 事件(3)——事件对象

事件对象 在触发DOM节点上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息. DOM中的事件对象 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>事件对象</title> 6 </head> 7 <body> 8 <div id="box"&

js里各浏览器解析XML,支持IE、火狐、Chrome等

js在chrome中加载XML,js加载XML支持ff,IE6+,Opera等浏览器 见代码: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js里各浏览器解析XML,支持IE.火狐.Chrome等</title> </head> <body> <script> fu