0
goog.eventsでは、unlistenByKeyメソッドを使用して、リスナーの固有のIDによる登録解除を許可します。このキーを取得する唯一の方法は、各イベントタイプを聞いてgoog.events.listen
を再度呼び出すか、goog.events.getListener
を呼び出して、各イベントタイプを聴いていることです。Google閉鎖時にunlistenByKeyを使用してイベントを非表示にする
var eventKeys = new Array(2);
goog.events.listen(document, ['mousedown', 'touchstart'], this.pressStartHandler_, false, this);
eventKey[0] = goog.events.getListener(document, 'mousedown', this.pressStartHandler_, false, this);
eventKey[1] = goog.events.getListener(document, 'touchstart', this.pressStartHandler_, false, this);
EDIT回答から、より良いアドバイスがなければ
、私は、キーを取得するには、次のラッパーを書いている:
/**
* Wrap goog.events.listen to capture all of the event keys of the requested listeners.
*
* @param {(EventTarget |
* goog.events.EventTarget | null)} src The node to listen to events on.
* @param {(Array |
* null | string)} type Event type or array of event types.
* @param {(Object |
* null)} listener Callback method, or an object with a handleEvent function.
* @param {(boolean |
* undefined)} opt_capt Whether to fire in capture phase (defaults to false).
* @param {(Object |
* null | undefined)} opt_handler Element in whose scope to call the listener.
* @returns {Array.<number>} Array of keys for listeners
*/
wias.util.listen = function(src, type, listener, opt_capt, opt_handler)
{
var i;
var keys = new Array();
goog.events.listen(src, type, listener, opt_capt, opt_handler);
if (type instanceof Array)
{
for (i = 0; i < type.length; i++)
{
keys.push(goog.events.getListener(src, type[i], listener, opt_capt, opt_handler).key);
}
}
else
{
keys.push(goog.events.getListener(src, type, listener, opt_capt, opt_handler).key);
}
return keys;
};