1

我在我的网站的 html 文件中编写了 vbscript,但我无法让它工作。我知道它只适用于 Internet Explorer,因为这是我看到人们写这个问题的常见答案。我能够使基本的 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 扩展名的脚本文件系统对象不起作用?我似乎无法搜索我正在寻找的答案。

4

3 回答 3

2

当您将脚本作为客户端脚本运行时,它会尝试从客户端计算机而不是服务器访问文件。该文件不存在,即使存在,您的脚本也不会被允许访问它。

于 2012-06-21T09:47:46.803 回答
2

当您从 ASP 页面使用 FileSystemObject 时,您就是在操作服务器的文件系统。这是允许的。

但是,当您使用上面的代码时,您是在客户端上执行代码。不允许从 Internet Explorer 内部访问客户端文件系统,因为这会产生严重的安全隐患。技术术语是“沙盒”。

如果您需要与客户端计算机上的文件系统进行交互,您将需要使用诸如 ActiveX 之类的技术。

于 2012-06-21T09:48:06.370 回答
1

您应该考虑通过使用 .hta 后缀重命名文件来使用 HTML 应用程序。

HTA 的执行不受 Internet 浏览器安全模型的限制;事实上,它作为“完全受信任”的应用程序执行。

在 Internet 浏览器中运行的 HTML 文件被视为“不受信任”,因为代码来自 Internet,并且通常被视为“不受信任”,因为浏览器强制执行严格的安全模型,以防止这些 HTML 页面访问您的计算机,即为什么 FileSystemObject 无法打开文本文件。但是,作为 HTA,它不再由您的浏览器运行,而是通过 Microsoft 的 MSHTA 应用程序运行,该应用程序授予您的脚本完全信任。

有关详细信息,请参阅HTML 应用程序 - 维基百科

于 2012-06-22T11:57:41.827 回答