我有一个外部程序,可以打开一个包含一些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中的窗口?
答案 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();
}