读取 HTML Application Location 对象的属性时出现权限被拒绝错误

重要

2022 Internet Explorer 11 桌面应用程序将停用,2022 年 6 月 15 日 (有关作用域内内容的列表,请参阅 FAQ ) 。 现在使用的相同 IE11 应用和网站可以在Microsoft Edge模式下Internet Explorer打开。 在此处了解详细信息。

本文提供了多种方法,用于解决在读取HTML Application (HTA 对象内的 Location 对象的属性时发生的"权限被拒绝) 。

原始版本:   Internet Explorer
原始 KB 编号:   816885

症状

当您读取位于 HTML Application (HTA) 中的 Location 对象的某些属性时,) 收到" 权限被拒绝 "错误消息。 Location 对象的相关属性包括:

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

备注

只有当使用 Microsoft Internet Explorer 的局域网或 LAN (中的自动配置脚本时,) 出现此错误。

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

发生运行时错误。 是否要调试? 第 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. 在"连接 " 选项卡上,单击 "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 的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 应用程序上,单击 "单击我"以重现此行为。 您收到本文的"症状"部分中提到的错误消息之一。

参考

有关详细信息,请参阅 HTML Applications (HTA)