释放JavaScript的ActiveXObject()?

时间:2010-09-02 15:05:02

标签: c# javascript com release activexobject

我正在使用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对象仍然存在。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

试,

keystore.Application.Quit();

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

您还可以在删除

之前尝试清空所有对象附加值
for (k in elm) {
            try {
                elm[k] = null;
            }
            catch (e) {
            }
        }
}

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

答案 1 :(得分:1)

我知道回复有点迟。 “迟到而不是永远”

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

你可以试试......

try
{
    keystore.closeKeyStore();
    delete keystore;
    keystore = null;
    CollectGarbage(); 
}
catch(err)
{
    alert('freeing ActiveXObject via javascript'+ err.description);
}