2012-06-21 138 views
1

我在我的網站的html文件中寫入了vbscript,並且無法使其工作。我知道它只適用於Internet Explorer,因爲這是我看到人們用這個問題寫的常見答案。我能夠獲得基本的VBScript工作,但是當試圖使用文件系統對象來打開文本文件時,什麼都不會發生。正在使用的代碼如下。在html文件中運行vbscript

<Script type="text/vbscript"> 

Dim fsobj, objtxt, thearr 

Set fsobj = CreateObject("Scripting.FileSystemObject") 
Set objtxt = fsobj.OpenTextFile("./subfolder/foo.txt", 1) 

thearr = split(objtxt.readline, ",")  
document.write(thearr(0) & " and " & thearr(1)) 

</script> 

我得到的代碼工作與ASP擴展名保存時,而不是當我保存爲HTML,是有辦法得到它,只有使用HTML擴展工作?如果沒有人有解釋爲什麼沒有asp擴展腳本的文件系統對象腳本不起作用?我似乎無法搜索我正在尋找的答案。

回答

2

當您使用ASP頁面中的FileSystemObject時,您正在操作服務器的文件系統。這是允許的。

但是,當您使用上述代碼時,您正在執行客戶端上的代碼。不允許從Internet Explorer內部訪問客戶端文件系統,因爲這會造成嚴重的安全隱患。技術術語是「sandboxing」。

如果您需要與客戶端機器上的文件系統交互,則需要使用ActiveX等技術。

+0

謝謝,我真的不確定,即時通訊使用iis和vbscript。您會說什麼是訪問該文件並收集由逗號分隔的數據的最佳解決方法。我正在考慮用JavaScript重寫它,因爲我們想保留.html擴展名。 –

+0

Web服務器上還是客戶端工作站上的文件? –

+0

@Jo Jo。我在下面的答案中發佈了最佳解決方法。將文件後綴從.html更改爲.hta。 (即查看HTML應用程序)。 –

2

將腳本作爲客戶端腳本運行時,它會嘗試從客戶端計算機訪問文件,而不是服務器。該文件不存在,即使它是,您的腳本將不被允許訪問它。

1

您應該考慮通過使用.hta後綴重命名文件來使用HTML應用程序。

HTA在沒有互聯網瀏覽器安全模型約束的情況下執行;實際上,它作爲一個「完全信任」的應用程序來執行。

在互聯網瀏覽器中運行的HTML文件被認爲是「不可信」的,因爲代碼來自互聯網,並且通常被認爲是「不可信」的,因此瀏覽器執行嚴格的安全模型,以防止這些HTML頁面訪問您的計算機,這就是FileSystemObject無法打開文本文件的原因。但是,作爲HTA,它不再由您的瀏覽器運行,而是通過Microsoft的MSHTA應用程序授予腳本完全信任。

欲瞭解更多信息,請參閱HTML Application - Wikipedia

相關問題