JAVASCRIPT完全自学手册,中源码的验证修订实例

源代码在线查看: 17-1 文件浏览器.hta

软件大小: 522 K
上传用户: zbcs1025
关键词: JAVASCRIPT 源码
下载地址: 免注册下载 普通下载 VIP

相关代码

				
				
				
				17-1  文件浏览器
				
				* { font-size:12px; font-family:宋体, Arial; } /*规定了所有的字体样式*/
				body { overflow:auto; }
				table { width:100%; }
				a { color:blue; line-height:20px; width:100%; overflow:visible; padding:0px 5px; text-decoration:none; }
				a:hover { background-color:#EFEFFF; color:black; }
				
				
				var fso;
				//函数“$”根据指定字符串获取相应ID的对象
				function $(str){ return(document.getElementById(str)); }
				//将给定的字符串中的特殊字符替换为HTML实体
				function html_encode(strV){ return(strV.replace(/&/g,"&").replace(/"/g,""").replace(/ /g," ").replace(/\t/g,"    ").replace(//g,">").replace(/\r\n/g,"")); }
				//窗体载入完毕时初始化
				window.onload = function(){
				    //创建FSO控件
				    fso = new ActiveXObject("Scripting.FileSystemObject");
				    //初始化显示
				    show_folder();
				}
				
				//获取系统中的所有驱动器
				function get_drives(){
				    //根据FSO的drives属性进行枚举
					var drvs=new Enumerator(fso.drives);
					//将返回值保存在数组中
					var re=[];
					//循环枚举过程
					while(drvs.item()){
						re.push(String(drvs.item()));
						drvs.moveNext();
					}
					return(re);
				}
				
				//获取指定目录下的文件
				function get_subfiles(fd_path){
				    //调用FSO的getFolder方法获取文件夹对象
					var fd=fso.getFolder(fd_path);
					//获取子文件
					var fds=new Enumerator(fd.files);
					var re=[];
					//枚举子文件列表
					while(fds.item()){
					    //将文件路径存入数组
						re.push(String(fds.item()));
						fds.moveNext();
					}
					return(re);
				}
				
				//获取指定目录下的子目录
				function get_subfolders(fd_path){
				    //调用FSO的getFolder方法获取文件夹对象
					var fd=fso.getFolder(fd_path);
					//获取子文件夹列表
					var fds=new Enumerator(fd.subfolders);
					var re=[];
					//枚举子文件夹列表
					while(fds.item()){
					    //将文件夹路径存入数组
						re.push(String(fds.item()));
						fds.moveNext();
					}
					return(re);
				}
				
				//以指定方式打开文件
				function f_open(fileName, openMode, createIfNotExists){
					return(fso.OpenTextFile(fileName, openMode, createIfNotExists));
				}
				
				//以文本方式一次性读取指定文件的所有内容并返回
				function read_all(fileName){
					var f, re;
					//打开文件
					f = f_open(fileName, 1);
					//读出文件内容
					try{ re = f.ReadAll(); }catch(e){}
					//关闭文件
					f.Close();
					return(re);
				}
				
				//显示指定文件夹的内容
				function show_folder(path){
				    var folders, files, pfolder, tb, row, cell, obj, of, ext;
				    //如果指定的文件夹路径存在
				    if(path && fso.folderExists(path)){
				        //获取子文件夹和文件名
				        folders = get_subfolders(path);
				        files = get_subfiles(path);
				        //获取指定的文件夹对象
				        pfolder = fso.getFolder(path).parentFolder;
				        if(pfolder == path)pfolder = "";
				    }else{
				        //如果路径不存在则获取所有磁盘驱动器列表
				        folders = get_drives();
				        files = [];
				        pfolder = "";
				    }
				    //清空原先的显示
				    $("hutia").innerHTML = "";
				    //生成用于输出的表格
				    tb = document.createElement("table");
				    $("hutia").appendChild(tb);
				    //如果指定的路径存在
				    if(path){
				        //显示回到父文件夹的链接
				        row = tb.insertRow(); cell = row.insertCell();
				        cell.colSpan = 3;
				        obj = document.createElement("a");
				        cell.appendChild(obj);
				        obj.path = pfolder;
				        obj.innerHTML = "..\\"
				        obj.href="#";
				        obj.onclick = nav;
				        //改变“当前路径”标题
				        $("f_title").innerHTML = path;
				    }else{
				        //指定路径不存在,显示“我的电脑”
				        $("f_title").innerHTML = "我的电脑";
				    }
				    //显示所有的子文件夹
				    for(var i in folders){
				        if(!folders[i])continue;
				        //依次获取每个子文件夹对象
				        of = path?fso.getFolder(folders[i]):folders[i];
				        //插入新行
				        row = tb.insertRow();
				        cell = row.insertCell(); cell.width = "20px";
				        //第一个单元格插入文件夹的图标
				        obj = document.createElement("img");
				        cell.appendChild(obj);
				        obj.src = "inc\\img\\folder.gif";
				        //第二个单元格插入子文件夹名称
				        cell = row.insertCell();
				        obj = document.createElement("a");
				        cell.appendChild(obj);
				        obj.path = folders[i];
				        obj.innerHTML = path?of.name:of;
				        obj.href="#";
				        //当子文件夹名称被点击,则调用函数“nav”
				        obj.onclick = nav;
				        //第三个单元格显示文件夹类型
				        cell = row.insertCell(); cell.width = "80px";
				        cell.innerHTML = path?of.type:"Disk";
				    }
				    //显示所有子文件
				    for(var i in files){
				        if(!files[i])continue;
				        //依次获取每个文件对象
				        of = path?fso.getFile(files[i]):files[i];
				        //获取文件扩展名
				        ext = String(files[i].match(/[^\.]+$/));
				        //插入新行
				        row = tb.insertRow();
				        cell = row.insertCell();
				        //第一个单元格插入文件的图标
				        obj = document.createElement("img");
				        cell.appendChild(obj);
				        //根据文件扩展名的不同显示不同的图标
				        obj.src = "inc\\img\\"+(/^doc|htm|html|ppt|rar|txt|xls|zip$/i.test(ext)?("s."+ext+".gif"):"page_white.gif");
				        //第二个单元格插入文件名称
				        cell = row.insertCell();
				        obj = document.createElement("a");
				        cell.appendChild(obj);
				        obj.path = files[i];
				        obj.ext = ext;
				        obj.innerHTML = path?of.name + ":" + of.type:of;
				        obj.href="#";
				        //当文件名称被点击,则调用函数“view”
				        obj.onclick = view;
				        //第三个单元格显示文件类型
				        cell = row.insertCell();
				        cell.innerHTML = path?of.type:"Disk";
				    }
				    
				}
				
				//显示此文件夹的内容
				function nav(){ show_folder(this.path); }
				
				//如果此文件是“txt”文件则读取并显示其内容
				function view(){
				    if(/txt/i.test(this.ext)){
				        var win=window.open();
				        win.document.write(html_encode(read_all(this.path)));
				        win.document.close();
				        win.document.title = "View - " + this.path;
				    }
				}
				
				
				
				
				
				
				
				
				
				
				
							

相关资源