读取 HTML 应用程序位置对象的属性时出现权限被拒绝错误

警告

已停用、不受支持的 Internet Explorer 11 桌面应用程序在某些版本的 Windows 10 上已通过 Microsoft Edge 更新永久禁用。 有关详细信息,请参阅 Internet Explorer 11 桌面应用停用常见问题解答

本文提供了许多方法,用于解决在读取 HTML 应用程序 (HTA) 内 Location 对象的属性时出现的 “权限被拒绝 ”错误消息。

原始版本: Ie
原始 KB 编号: 816885

症状

读取 HTML 应用程序 (HTA) 内 Location 对象的某些属性时,可能会收到 “权限被拒绝” 错误消息。 Location 对象的相关属性包括:

  • Location.href
  • Location.hostname
  • Location.reload

注意

只有在使用本地局域网 (LAN) Microsoft Internet Explorer 设置中的自动配置脚本时,才会注意到此错误。

如果计算机上安装了调试工具,则可能会收到以下错误消息:

发生运行时错误。 是否要调试? 第 12 行错误:权限被拒绝

如果计算机上未安装调试工具,可能会收到以下错误消息:

此页上的脚本中发生错误。 行: 13 字符: 2 错误: 权限被拒绝 代码: 0 URL: http://WebServer/FileName.hta 是否继续在此页上运行脚本?

注意

仅当自动配置脚本具有 DIRECT 值时,才会注意到此问题。

解决方案

若要解决此问题,请使用以下任一方法:

注意

以下方法基于本文重现行为的步骤部分中提到的示例。 因此,这些方法中的代码和文件名可能与代码和文件名不同。

  • 在 Internet Explorer 的代理服务器设置中对代理服务器进行硬编码,而不是使用自动配置脚本,然后按 F5 在浏览器中刷新 HTA。
  • 使用主机名而不是完全限定的域名 (FQDN) 来访问 HTA 的路径。
  • 使用 IP 地址访问 HTA。
  • 将要访问的网站添加到“受信任”区域或“受限”区域。
  • 请勿在代码中使用 Location 对象。
  • 单击以清除 Internet Explorer 的安全设置中的“包括绕过代理服务器的所有站点检查”框。

重现行为的步骤

  1. 启动 Internet Explorer。

  2. 在“工具”菜单上,单击“Internet 选项”

  3. “Connections”选项卡上,单击“LAN 设置”。

  4. 在“局域网 (LAN) 设置”对话框中,单击以选中“检查使用自动配置脚本”框。 确保未选择其他检查框。

  5. 在“ 地址 ”框中,键入自动配置脚本的路径。

  6. 使用记事本创建名为 Default.hta 的文本文件。

  7. 将以下 HTML 代码添加到 Default.hta 文件:

    <html>
        <head>
            <title>HTA Location.href bug reproduction</title>
            <HTA:APPLICATION ID="oBugRepro" APPLICATIONNAME="BugRepro">
                <SCRIPT LANGUAGE="JavaScript">
                    function ShowFrame() {
                        var strLocation;
                        strLocation = top.fraTabs.location.href;
                    }
                </SCRIPT>
        </head>
        <frameset id="fstWorkAreaMain" name="fstWorkAreaMain" rows="40%,60%">
            <frame src="about:blank" id="fraTabs" name="fraTabs" APPLICATION="yes">
                <frame src="Main.htm" id="fraMain" NAME="fraMain" APPLICATION="yes">
        </frameset>
    </html>
    
  8. 使用记事本创建名为 Main.htm 的文本文件。

  9. 将以下 HTML 代码添加到 Main.htm 文件:

    <HTML>
        <BODY style="background-color:gainsboro">
            <P>Main frame</P>
            <input id="cmdButton" type="button" onclick="top.ShowFrame()"
                value="Click me to reproduce the behavior"></input>
        </BODY>
    </HTML>
    
  10. 将两个文件 Default.hta 和 Main.htm 放在 Web 服务器上名为 HTARepro 的虚拟目录中。

  11. 确保已启用对 HTARepro 虚拟目录内容的匿名访问。

  12. 在命令提示符下键入以下命令:

    mshta.exe http://WebServer/HTARepro/Default.hta
    

    注意

    将 替换为 WebServer 正在使用的 Web 服务器的 FQDN。

  13. 在 HTA 应用程序中,单击“ 单击我”以重现该行为。 你会收到本文症状部分中提到的错误消息之一。

References

有关详细信息,请参阅 HTML 应用程序简介 (HTA)