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からのものです

削除する前に、オブジェクトに添付されているすべての値をnullにすることもできます

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 に答える