【问题标题】:window.close not closing window in HTA applicationwindow.close 不关闭 HTA 应用程序中的窗口
【发布时间】:2016-04-26 16:09:13
【问题描述】:

在我的 HTA 应用程序中,我使用 JavaScript 日历窗口,当用户单击其中一个日期时,它使用 window.open() 打开并使用 window.close() 关闭。此日历可在 10 多年的多个浏览器和版本上正常运行。它甚至大部分时间都可以在 HTA 应用程序中使用。

但是在运行 IE11 的特定工作站上。 window.close() 命令被简单地忽略,导致窗口保持打开状态。在其他 IE11 工作站上它工作正常。我认为关闭 IE11、Internet 选项、安全选项卡上的“启用保护模式”复选框可以解决其中一个有问题的工作站上的问题。但是,其他工作站在启用此设置的情况下工作正常,关闭此设置不是可接受的解决方案。

重现问题的代码示例:

HTA 应用

<HTML>
<HEAD>
<HTA:APPLICATION ID="OpenCloseExample" BORDER="thick" BORDERSTYLE="complex"/>
<TITLE>Open Close HTA container</TITLE>
</HEAD>
<iframe width="1024px" height="768px" src="http://localhost:28080/openclose.html"/>
</HTML>

openclose.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Main Page</title>
    <script src="openclose.js"></script>
</head>
<body>
    <a href="#" onclick="openWindow();">open</a>
</body>
</html>

openclose.js

var win;

function openWindow() {
    win = window.open("", "_blank", 'width=250,height=250,status=no,resizable=no,location=no,top=100,left=100');
    win.document.writeln("<html><head><script src='openclose.js'></script></head><a href='#' onclick='javascript:window.opener.closeWindow()'>close</a></html>");
}

function closeWindow() {
    win.window.close();
}

【问题讨论】:

    标签: javascript html window internet-explorer-11 hta


    【解决方案1】:

    我无法在任何具有任何设置的 IE 中看到此功能。问题是这个字符串:&lt;script src='openclose.js'&gt;&lt;/script&gt;。也就是说,当 HTML 解析器 会找到它时,字符串中的文字结束脚本标记充当页面上的结束脚本标记。这意味着,您的脚本从未被加载。

    要解决这个问题,你必须打破文字标签,例如:

    &lt;script src='openclose.js'&gt;&lt;\/script&gt;

    【讨论】:

    • 我的脚本在 IE 中运行良好,据我所知,无需转义“/”符号。无论如何,这只是重现问题的示例代码,实际代码要复杂得多。
    • 已经发现这与作为普通用户的工作有关,后者遇到问题,而管理员工作正常。需要找出导致该行为的具体设置。
    【解决方案2】:

    既然你已经指出 IE11 导致 JS 不能工作,你可以很容易地强制 IE 在旧版本中渲染。

    <meta http-equiv="X-UA-Compatible" content="IE=9">
    

    此元标记在 HTA 应用程序中非常流行,用于在特定 IE 版本中使用 JS/ActiveX 方法/属性(其中大部分已被弃用)。

    欲了解更多信息,请访问X-UA-Compatible Tag Wiki

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      我最终想通了。 改变:

      <a href="#" onclick="openWindow();">open</a>
      

      到:

      <a href="javascript:openWindow()">open</a>
      

      问题已解决

      【讨论】:

        猜你喜欢
        • 2015-06-08
        • 1970-01-01
        • 2011-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        相关资源
        最近更新 更多