イベントの伝達を即時終了
あいうえお
<script type="text/javascript">
// ------------------------------------------------------------
// DOM オブジェクトのすべての子孫を検索する関数
// ------------------------------------------------------------
function DomNodeFindAllDescendants(node,func){
function f(n){
var nodes = n.childNodes;
var i;
var num = nodes.length;
var a = new Array();
for(i=0;i < num;i++){ a[i] = nodes[i]; }
for(i=0;i < num;i++){
node = func(a[i]);
if(node){ return node; }
node = f(a[i]);
if(node){ return node; }
}
return null;
}
return f(node);
}
// イベントリスナーに対応している
if(window.addEventListener){
// ------------------------------------------------------------
// マウスボタンをクリックしたときに実行される関数
// ------------------------------------------------------------
function MouseClickFunc(e){
var current = e.currentTarget;
console.log("カレント:" + current + "(" + current.nodeName + ")");
console.log("イベントフェーズ:" + e.eventPhase);
console.log("---");
// ターゲットフェーズに到達した
if (e.eventPhase == Event.AT_TARGET) {
// イベント通知の伝達を直ちに終了する
e.stopImmediatePropagation();
}
}
// ------------------------------------------------------------
// すべてのフェーズでリッスンを開始
// ------------------------------------------------------------
// ウィンドウにリスナーを登録
window.addEventListener("click",MouseClickFunc,true );
window.addEventListener("click",MouseClickFunc,false );
// ドキュメントにリスナーを登録
document.addEventListener("click",MouseClickFunc,true );
document.addEventListener("click",MouseClickFunc,false );
// コールバック関数を使って、ドキュメントのすべての子孫を検索
DomNodeFindAllDescendants(document,function (node){
// ドキュメントの子孫にリスナーを登録
node.addEventListener("click",MouseClickFunc,true );
node.addEventListener("click",MouseClickFunc,false );
// 検索を継続
return null;
});
}
</script>