4

我正在使用 javascript: 调用 C# COM 组件keystore = new ActiveXObject("RBCrypto.KeyStore");。我注意到这个实例一直存在,直到我退出浏览器。当用户离开页面时,是否有“释放”该对象?目前我正在使用:

window.onunload=function() //when a user leaves the page close the keystore
{
     if(keystore != null)
     {
         try
         {
            keystore.closeKeyStore(); //method in keystore
            delete keystore;
         }
         catch(err) { alert(err.description); }
     }  
}

但是 COM 对象仍然存在。有任何想法吗?

4

2 回答 2

1

尝试,

keystore.Application.Quit();

这个结果来自http://www.c-point.com/javascript_tutorial/jsobjActiveXObject.htm

您还可以尝试在删除之前将所有对象附加值清空

for (k in elm) {
            try {
                elm[k] = null;
            }
            catch (e) {
            }
        }
}

我发现这对于尚未删除的 HTML 对象很有帮助,并且附加了各种对象。

于 2010-11-06T14:38:44.777 回答
1

我知道现在回复有点晚了。“迟到总比没有”

我认为正确的是“Application.Quit();”。但是,COM/OLE/ActiveX 对象的应用程序可以返回 null。我不知道如何做 return Application != null 来运行 Quit();

你可以试试...

try
{
    keystore.closeKeyStore();
    delete keystore;
    keystore = null;
    CollectGarbage(); 
}
catch(err)
{
    alert('freeing ActiveXObject via javascript'+ err.description);
}
于 2012-01-24T12:00:46.180 回答