1. 程式人生 > >6.29

6.29

absolute 系列 說明 arp activex clientx scrip 文件流 coord

一、文檔碎片

二、IO操作

一、功能實現核心:FileSystemObject 對象

要在javascript中實現文件操作功能,主要就是依靠FileSystemobject對象。

二、FileSystemObject編程

使用FileSystemObject 對象進行編程很簡單,一般要經過如下的步驟: 創建FileSystemObject對象、應用相關方法、訪問對象相關屬性 。

(一)創建FileSystemObject對象

創建FileSystemObject對象的代碼只要1行:

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:\test.txt的句柄:

fso = newActiveXObject("Scripting.FileSystemObject");f1 = fso.GetFile("c:\\myjstest.txt");

然後,使用f1訪問對象的相關屬性。比如:

執行上面最後一句後,將顯示c:\myjstest.txt的最後修改日期屬性值。

但有一點請註意:對於使用create方法建立的對象,就不必再使用get方法獲取對象句柄了,這時直接使用create方法建立的句柄名稱就可以:

三、操作驅動器(Drives)

使用FileSystemObject對象來編程操作驅動器(Drives)和文件夾(Folders)很容易,這就象在Windows文件瀏覽器中對文件進行交互操作一樣,比如:拷貝、移動文件夾,獲取文件夾的屬性。

(一)Drives對象屬性

Drive對象負責收集系統中的物理或邏輯驅動器資源內容,它具有如下屬性:

l TotalSize:以字節(byte)為單位計算的驅動器大小。

l AvailableSpace或FreeSpace:以字節(byte)為單位計算的驅動器可用空間。

l DriveLetter:驅動器字母。

l DriveType:驅動器類型,取值為:removable(移動介質)、fixed(固定介質)、network(網絡資源)、CD-ROM或者RAM盤。

l SerialNumber:驅動器的系列碼。

l FileSystem:所在驅動器的文件系統類型,取值為FAT、FAT32和NTFS。

l IsReady:驅動器是否可用。

l ShareName:共享名稱。

l VolumeName:卷標名稱。

l Path和RootFolder:驅動器的路徑或者根目錄名稱。

(二)Drive對象操作例程

下面的例程顯示驅動器C的卷標、總容量和可用空間等信息:

fso, drv, s =""; fso= newActiveXObject("Scripting.FileSystemObject"= fso.GetDrive(fso.GetDriveName("c:\\")); s+= "Drive C:" + " - "; s+= drv.VolumeName + "\n"+= "Total Space: " + drv.TotalSize / 1024; s+= " Kb" + "\n"; s+= "Free Space: " + drv.FreeSpace / 1024+= " Kb" + "\n"; alert(s);

四、操作文件夾(Folders)

涉及到文件夾的操作包括創建、移動、刪除以及獲取相關屬性。

Folder對象操作例程 :

下面的例程將練習獲取父文件夾名稱、創建文件夾、刪除文件夾、判斷是否為根目錄等操作:

var= ActiveXObject("Scripting.FileSystemObject"); f1= fso.CreateTextFile("c:\\testfile.txt", true);

第二種是使用OpenTextFile方法,並添加上ForWriting屬性,ForWriting的值為2。代碼如下:

varfso, ts;varForWriting= 2; fso= newActiveXObject("Scripting.FileSystemObject"); ts= fso.OpenTextFile("c:\\test.txt", ForWriting, true);

第三種是使用OpenAsTextStream方法,同樣要設置好ForWriting屬性。代碼如下:

varfso, f1, ts;varForWriting = 2; fso= newActiveXObject("Scripting.FileSystemObject"); fso.CreateTextFile ("c:\\test1.txt"); f1= fso.GetFile("c:\\test1.txt"); ts= f1.OpenAsTextStream(ForWriting, true);

(四)讀取文件內容

從文本文件中讀取數據要使用TextStream對象的Read、ReadLine或ReadAll 方法。Read方法用於讀取文件中指定數量的字符;ReadLine方法讀取一整行,但不包括換行符;ReadAll方法則讀取文本文件的整個內容。讀取的內容存放於字符串變量中,用於顯示、分析。

方法或者屬性 描述

BuildPath() 生成一個文件路徑 CopyFile() 復制文件 CopyFolder() 復制目錄 CreateFolder() 創建新目錄 CreateTextFile() 生成一個文件 DeleteFile() 刪除一個文件 DeleteFolder() 刪除一個目錄 DriveExists() 檢驗盤符是否存在 Drives 返回盤符的集合 FileExists() 檢驗文件是否存在 FolderExists 檢驗一個目錄是否存在 GetAbsolutePathName() 取得一個文件的絕對路徑 GetBaseName() 取得文件名 GetDrive() 取得盤符名 GetDriveName() 取得盤符名 GetExtensionName() 取得文件的後綴 GetFile() 生成文件對象 GetFileName() 取得文件名 GetFolder() 取得目錄對象 GetParentFolderName 取得文件或目錄的父目錄名 GetSpecialFolder() 取得特殊的目錄名 GetTempName() 生成一個臨時文件對象 MoveFile() 移動文件 MoveFolder() 移動目錄 OpenTextFile() 打開一個文件流 f.Files//目錄下所有文件集合f.attributes //文件屬性Case 0 Str="普通文件。沒有設置任何屬性。 "Case1 Str="只讀文件。可讀寫。 "Case2 Str="隱藏文件。可讀寫。 "Case4 Str="系統文件。可讀寫。 "Case16 Str="文件夾或目錄。只讀。 "Case32 Str="上次備份後已更改的文件。可讀寫。 "Case1024 Str="鏈接或快捷方式。只讀。 "Case2048 Str=" 壓縮文件。只讀。"f.Datecreated//創建時間f.DateLastAccessed //上次訪問時間f.DateLastModified //上次修改時間f.Path //文件路徑f.Name //文件名稱f.Type //文件類型f.Size //文件大小(單位:字節)f.ParentFolder //父目錄f.RootFolder //根目錄

實例說明

BuildPath(路徑,文件名) //這個方法會對給定的路徑加上文件,並自動加上分界符

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject");varnewpath = fso.BuildPath("c:\\tmp", "51js.txt"); //生成 c:\tmp\51js.txt的路徑alert(newpath);--></SCRIPT>

CopyFile(源文件, 目標文件, 覆蓋) //復制源文件到目標文件,當覆蓋值為true時,如果目標文件存在會把文件覆蓋

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject");varnewpath = fso.CopyFile("c:\\autoexec.bat", "d:\\autoexec.bak");--></SCRIPT>

CopyFolder(對象目錄,目標目錄 ,覆蓋) //復制對象目錄到目標目錄,當覆蓋為true時,如果目標目錄存在會把文件覆蓋

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); fso.CopyFolder("c:\\WINDOWS\\Desktop", "d:\\"); //把C盤的Desktop目錄復制到D盤的根目錄--></SCRIPT>

CreateFolder(目錄名) //創建一個新的目錄

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject");varnewFolderName = fso.CreateFolder("c:\\51JS"); //在C盤上創建一個51JS的目錄--></SCRIPT>

CreateTextFile(文件名, 覆蓋) //創建一個新的文件,如果此文件已經存在,你需要把覆蓋值定為true

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject");varnewFileObject = fso.CreateTextFile("c:\\autoexec51JS.bat", true); //腳本將在C盤創建一個叫 autoexec51JS.bat的文件--></SCRIPT>

DeleteFile(文件名, 只讀?) //刪除一個文件,如果文件的屬性是只讀的話,你需要把只讀值設為true

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); //為了安全我先把要刪除的autoexec.bat備份到你的D盤varnewpath = fso.CopyFile("c:\\autoexec.bat", "d:\\autoexec.bat"); //把C盤的autoexec.bat文件刪除掉fso.DeleteFile("c:\\autoexec.bat", true);--></SCRIPT>

DeleteFolder(文件名, 只讀?)//刪除一個目錄,如果目錄的屬性是只讀的話,你需要把只讀值設為true

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); fso.CopyFolder("c:\\WINDOWS\\Desktop", "d:\\"); //為了安全我先把你C盤的Desktop目錄復制到你D盤的根目錄fso.DeleteFolder("c:\\WINDOWS\\Desktop", true); //把你的Desktop目錄刪除,但因為desktop是系統的東西,所以不能全部刪除,但.........--></SCRIPT>

DriveExists(盤符) //檢查一個盤是否存在,如果存在就返會真,不存在就返回.......

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); hasDriveD= fso.DriveExists("d"); //檢查系統是否有D盤存在hasDriveZ = fso.DriveExists("z"); //檢查系統是否有Z盤存在if(hasDriveD) alert("你的系統內有一個D盤");if(!hasDriveZ) alert("你的系統內沒有Z盤");--></SCRIPT>

FileExists(文件名) //檢查一個文件是否存在,如果存在就返會真,不存在就返回.......

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); fileName= fso.FileExists("c:\\autoexec.bat");if(fileName) alert("你在C盤中有autoexec.bat文件,按下確定後這個文件將被刪除!"); //開個玩笑:)--></SCRIPT>

FolderExists(目錄名) //檢查一個目錄是否存在,如果存在就返會真,不存在就返回.......

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); folderName= fso.FolderExists("c:\\WINDOWS\\Fonts");if(folderName) alert("按下確定後系統的字庫將被刪除!"); //開個玩笑:)--></SCRIPT>

GetAbsolutePathName(文件對象) //返回文件對象在系統的絕對路徑

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); pathName= fso.GetAbsolutePathName("c:\\autoexec.bat"); alert(pathName);--></SCRIPT>

GetBaseName(文件對象) //返回文件對象的文件名

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); baseName= fso.GetBaseName("c:\\autoexec.bat"); //取得autoexec.bat的文件名autoexecalert(baseName);--></SCRIPT>

GetExtensionName(文件對象) //文件的後綴

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); exName= fso.GetExtensionName("c:\\autoexec.bat"); //取得autoexec.bat後綴batalert(exName);--></SCRIPT>

GetParentFolderName(文件對象) //取得父級的目錄名

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); parentName= fso.GetParentFolderName("c:\\autoexec.bat"); //取得autoexec.bat的父級目錄C盤alert(parentName);--></SCRIPT>

GetSpecialFolder(目錄代碼) //取得系統中一些特別的目錄的路徑,目錄代碼有3個分別是 0:安裝Window的目錄 1:系統文件目錄 2:臨時文件目錄

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); tmpFolder= fso.GetSpecialFolder(2); //取得系統臨時文件目錄的路徑 如我的是 C:\windows\tempalert(tmpFolder);--></SCRIPT>

GetTempName() //生成一個隨機的臨時文件對象,會以rad帶頭後面跟著些隨機數,就好象一些軟件在安裝時會生成*.tmp

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject"); tmpName= fso.GetTempName(); //我在測試時就生成了radDB70E.tmpalert(tmpName);--></SCRIPT>

MoveFile(源文件, 目標文件) //把源文件移到目標文件的位置

<SCRIPT LANGUAGE="JavaScript"><!--varfso = newActiveXObject("Scripting.FileSystemObject");varnewpath = fso.MoveFile("c:\\autoexec.bat", "d:\\autoexec.bat"); //把C盤的autoexec.bat文件移移動到D盤--></SCRIPT>

三、H5+

HTML5+擴展了JavaScript對象plus,使得js可以調用各種瀏覽器無法實現或實現不佳的系統能力,設備能力如攝像頭、陀螺儀、文件系統等,業務能力如上傳下載、二維碼、地圖、支付、語音輸入、消息推送等。

四、怎麽獲得鼠標坐標的幾種方法

取鼠標坐標位置有這些:鼠標在視口的坐標位置(clientX,clientY),鼠標在頁面的坐標位置(pageX,pageY),鼠標在屏幕的坐標位置(screenX,screenY),其中鼠標在視口的坐標位置(clientX,clientY),以及鼠標在屏幕的坐標位置(screenX,screenY)在所有的瀏覽器中都支持,但是鼠標在頁面的坐標位置(pageX,pageY)在IE8及更早版本不支持,但是沒有關系,可以通過scrollLeft 和 scrollTop可以計算出pageX,pageY的值。

首先是跨瀏覽器的事件對象

varEventUtil ={ addHandler:function(elem,type,handler){if(elem.addEventListener) { elem.addEventListener(type,handler,false); }elseif(elem.attachEvent) { elem.attachEvent("on"+type,handler); }else{ elem["on"+type]=handler; } }, removeHandler:function(elem,type,handler){if(elem.removeEventListener) { elem.removeEventListener(type,handler,false); }elseif(elem.detachEvent) { elem.detachEvent("on"+type,handler); }else{ elem["on"+type]=null; } }, getEvent:function(event){returnevent?event:window.event; }, getTarget:function(event){returnevent.target||event.srcElement; }, preventDefault:function(event){if(event,preventDefault){ event.preventDefault(); }else{ event.returnValue= false; } }, stopPropagation:function(event){if(event.stopPropagation){ event.stopPropagation(); }else{ event.cancelBubble=true; } }};

1.視口坐標位置

vardiv = document.getElementById("myDiv");EventUtil.addHandler(div,"click",function(event){ event=EventUtil.getEvent(event); alert("Client coordinages: "+event.clientX+","+event.clientY);});

2.屏幕坐標位置

vardiv = document.getElementById("myDiv");EventUtil.addHandler(div,"click",function(event){ event=EventUtil.getEvent(event); alert("Screen coordinates: "+event.screenX+","+event.screenY);});

3.頁面坐標位置

vardiv = document.getElementById("myDiv");EventUtil(div,"click",function(event){ event=EventUtil.getEvent(event);varpageX =event.pageX;varpageY =event.pageY;if(pageX==undefined) { pageX=event.clientX+document.body.scrollLeft||document.documentElement.scrollLeft; }if(pageY==undefined) { pageY= event.clientY+document.body.scrollTop||document.documentElement.scrollTop; } alert("Page coordinates: "+pageX+","+pageY);});

6.29