如何在不触发“ window.onunload”的情况下关闭窗口?

时间:2019-01-16 23:56:09

标签: javascript html

我有一个外部程序,可以打开一个包含一些JavaScript的 .hta 文件:

function getLUTKey(key) {
  // Write txt file to user's file system
  var fso, fh;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  fh = fso.CreateTextFile("PartID.txt", true);

  fh.Write(key);
  fh.close();
  self.close();
}

这个想法是,该窗口包含许多不同部分的链接,单击这些链接时,将使用上述js函数将它们各自的“部分ID”写入文件。然后,前面提到的外部程序在后台等待该文件的创建,然后使用文件的内容。

但是,为了防止用户不选择零件就退出- 因此,在超时触发之前,永远不要创建文件并使外部程序循环-我添加了以下代码:

window.onunload = function(){ getLUTKey('cancel') };

这带来了另一个问题。当getLUTKey()使用有效ID运行并关闭窗口时,window.unload代码将在之后立即运行,并用“取消”覆盖文件中的ID。我的问题是这样:

是否可以在不触发window.unload的情况下关闭javascript中的窗口?

1 个答案:

答案 0 :(得分:4)

我想您可以更轻松地管理应用程序的状态。例如,完成该功能后,您只需删除窗口关闭处理程序即可。

function getLUTKey(key){
// Write txt file to user's file system 
var fso, fh;
fso = new ActiveXObject('Scripting.FileSystemObject');
fh = fso.CreateTextFile('PartID.txt', true);     
fh.Write(key);          
fh.close();
window.onunload = null;
self.close();
}