実際にウィジェットを使用している場合、通常はtehir destroy()メソッドで接続を解除する必要があります。自分でノードを操作している場合は、2つの方法があります。
1)すべての接続を手動で管理する。つまり、どこかに格納することを意味します。 2)1おそらく、より安全:
node._connectHandlers = [];
node._connectHandlers.push(dojo.connect(node, "onclick", ...));
以降あなたは、単に、実際にこの月を
dojo.query("*", nodeContainingConnects).forEach(function(node){
if (typeof node._connectHandlers!="undefined"){
dojo.forEach(node._connectHandlers, "dojo.disconnect(item)");
}
});
を使用して、それらすべてを切断することができますので、同じように、彼らが接続するノード内のすべての接続ハンドラを保存しますうまく機能しますが、ノードごとにすべての接続を取得する効率的な方法があるかもしれません。私はそれを見つけられませんでした。
dojo._connect_tmp = dojo.connect;
dojo.connect = function (obj, event, context, method, dontFix) {
if(obj._connectHandlers == undefined){ obj._connectHandlers = [];}
var handler = dojo._connect_tmp (obj, event, context, method, dontFix);
obj._connectHandlers.push(handler);
return handler;
};
dojo.iwanttobefree = function (obj) {
if(obj._connectHandlers == undefined) {
} else {
dojo.forEach(obj._connectHandlers, "dojo.disconnect(item)");
}
};
は、その後、あなたがこれを行うことができます:これは「改善」することができヴォルフラムKriesingの答えに続きHTH
ありがとう、私はそれを試してみよう! – AndreiM
私は、AJAXの領域に少数のイベントハンドラを含めるとは期待していないので、すべてのノードのハンドルをすべて1つの配列に格納することになりました。私は、各要素を私のページ上のどのノードでも反復処理することなく切断メソッドに渡すことができます。 FireFoxがAJAX呼び出しをトリガする際にどれくらいのメモリを使用しているかが影響しているようです。あなたの助けをもう一度ありがとう! – AndreiM
'dojo._connect_tmp = dojo.connect; dojo.connect = function(obj、event、context、method、dontFix){ if(obj._connectHandlers == undefined){obj._connectHandlers =];} obj._connectHandlers.push(dojo._connect_tmp(obj、event 、コンテキスト、メソッド、dontFix)); }; dojo.iwanttobefree = function(obj){' if(obj._connectHandlers == undefined){' } else {' ' dojo.forEach(node._connectHandlers、 "dojo.disconnect(item)"); } ' }; – Mahomedalid