>>2
> onclick="event.preventDefault (); "
> onclick="return document.getElementById ('sample').dispatchEvent (event);
ごめんなさいごめんなさい,これだと移動してしまいますね。これらのサンプルは撤回します。
要するに何が言いたかったのかと言いますと,a 要素ノードを a としたとき,
★ DOM Events の場合
a.addEventListener ('click', function (event) { return false; }, false);
のように,イベント属性と同じつもりで false を返しても,デフォルト動作をキャンセルすることはできません。
a.addEventListener ('click', function (event) { event.preventDefault (); }, false);
のようにしなければなりません。古いイベントハンドラを DOM Events に合わせて書き換える場合は注意して下さい。
★ IE の場合
<a href="URI" onclick="return false; ">...</a>
<a href="URI" onclick="event.returnValue = false; ">...</a>
a.onclick = function () { return false; };
a.onclick = function () { event.returnValue = false; };
a.attachEvent ('onclick', function () { return false; } );
a.attachEvent ('onclick', function () { event.returnValue = false; } );
a.attachEvent ('onclick', function (e) { e.returnValue = false; } ); // IE6 以降?
いずれの方法でもデフォルト動作をキャンセルできます。なお,attachEvent で登録されたイベントハンドラの実行順序はランダムですが,どれか一つでもあればデフォルト動作をキャンセルします。
http://devedge-temp.mozilla.org/library/manuals/2000/javascript/1.3/guide/evnt.html#1010420
http://msdn.microsoft.com/workshop/author/dhtml/reference/events/onclick.asp
----
以上,イベントハンドラ・イベントリスナを HTML ソースから切り離して書く場合,イベントモデルの違いにご注意下さい,と言うことでした。
スレ違いの雑談を長々とすみません。以下本題に戻ります(たぶん)↓