我想允许某些元素(即<a>
和<form>
)的默认事件行为,直到我可以确定已处理Google Analytics队列中的项目。在事件被停止或阻止后,DOM事件可以被允许为其默认行为吗?
我见过涉及添加事件监听器停止传递事件(event.stop()
或event.stopPropagation()
或return false
),或阻止其默认行为(event.preventDefault()
)许多方法。这就要求以某种方式重写行为,而不是仅仅传递/激活/释放原始事件。
例如,MooTools的,我可以用下面的事件处理上<a id="special-a-element">
,推动并重定向到目标文档之前处理GA事件:
$('special-a-element').addEvent('click', function() {
var url = this.get('href');
_gaq.push(['_trackEvent', 'category', 'action']);
_gaq.push(function() { document.location = url; });
return false;
});
这里,document.location
再现什么浏览器可以做如果它被允许处理我已经停止的click
事件(使用return false
);这似乎没有必要。如果special-a-element
有target = "_blank"
?聆听者不会在新窗口中打开链接,而是在当前链接中(因为document.location
)。
所以我想允许默认行为不停止它然后重新执行它。有什么建议么?
改变了措辞,因为我希望能允许的默认事件处理行为的发生_once_我额外的代码已经完成; _delaying_的默认行为并不完全是我所追求的。 – lucasrizoli 2011-06-10 17:21:55