【问题标题】:Freeing JavaScript's ActiveXObject()?释放 JavaScript 的 ActiveXObject()?
【发布时间】:2011-04-07 09:42:50
【问题描述】:

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

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

【问题讨论】:

    标签: c# javascript com release activexobject


    【解决方案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);
    }
    

    【讨论】:

      【解决方案2】:

      试试,

      keystore.Application.Quit();
      

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-10
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多