2008年6月20日 星期五

[Browser]“取消”和“停止”流覽器事件 stopEvent

這種做法是從Bret Taylor的blog上面抄來的,原文地址在這裡(好像是,不是也別怪我。)。對於避免ajax應用中不同層的事件干擾很有用的。

先說一下“取消(cancel)”和“停止(stop)”的區別:說白了,停止就是當事件發生後,阻止它自動冒泡到父容器內;而取消則是當冒泡發生到父容器之後停止,也就是不在當前元素中回應。天哪,這東西說起來話長了,代碼說話:

function stopEvent(e) {
if (!e) e = window.event;
if (e.stopPropagation) {
e.stopPropagation();
} else {
e.cancelBubble = true;
}
}

var link = document.getElementById("link");
link.onclick = stopEvent;

以上這一段是阻止父容器事件的

function cancelEvent(e) {
if (!e) e = window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}

var link = document.getElementById("link");
link.onclick = function(e) {
cancelEvent(e);
stopEvent(e);
}

以上這一段是阻止子元素事件的

例子位址在這裡:demo

沒有留言:

wibiya widget