window.close不关闭HTA应用程序中的窗口

时间:2016-01-26 09:58:25

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

在我的HTA应用程序中,我使用的是JavaScript日历窗口,当用户点击其中一个日期时,它会使用window.open()打开并使用window.close()关闭。 10多年来,这个日历适用于多种浏览器和版本。它甚至可以在大多数时间用于HTA应用程序。

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

重现问题的代码示例:

HTA申请

this.selectedCategory.subscribe(function(newVal) {

    if (newVal != undefined) {
      var newValue = jQuery.extend(true, {}, newVal);
      that.newObjectToSave(newValue);
      // newObjectToSave().ecomCategories = [];
    }

  });

openclose.html

myData[i]=parseFloat(attr);

openclose.js

CALayer

3 个答案:

答案 0 :(得分:1)

我无法通过任何设置在任何IE中看到此功能。问题是这个字符串:<script src='openclose.js'></script>。也就是说,当 HTML解析器找到它时,字符串中的文字结尾脚本标记将作为页面上的结束脚本标记。这意味着,您的脚本从未加载过。

要解决此问题,您必须打破文字标记,例如:

<script src='openclose.js'><\/script>

答案 1 :(得分:1)

我最终想到了这一点。 改变:

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

为:

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

已解决问题

答案 2 :(得分:0)

由于您已经指出IE11导致JS无法正常工作,因此您可以非常轻松地强制IE在旧版本中呈现。

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

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

有关详细信息,请访问X-UA-Compatible Tag Wiki

希望这有帮助