【问题标题】:Running vbscript in html file在 html 文件中运行 vbscript
【发布时间】:2012-06-21 09:41:46
【问题描述】:

我在我的网站的 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 扩展名的脚本文件系统对象不起作用?我似乎无法搜索到我正在寻找的答案。

【问题讨论】:

    标签: vbscript


    【解决方案1】:

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

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

    如果您需要与客户端机器上的文件系统交互,您将需要使用 ActiveX 等技术。

    【讨论】:

    • 谢谢,我不太确定,我刚开始使用 iis 和 vbscript。您会说什么是访问该文件并收集以逗号分隔的数据的最佳解决方法。我正在考虑用 javascript 重写它,因为我们想保留 .html 扩展名。
    • @乔乔。我在下面的答案中发布了最佳解决方法。将文件后缀从 .html 更改为 .hta。 (即参见 HTML 应用程序)。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      有关更多信息,请参阅HTML Application - Wikipedia

      【讨论】:

        猜你喜欢
        • 2015-05-12
        • 2019-11-15
        • 2012-08-07
        • 2017-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 2017-10-28
        相关资源
        最近更新 更多