IE9+prototype.jsの組み合わせでEvent.stop系の処理が素通りされる(未解決)
IE9+prototype.jsのver1.5.0_rc0で起きたバグ。prototype.jsを最新版にしろってことか。
下のソースはlightbox.jsの一部にコードを追加したもの(document.observeもどうかと思うけどさ…)
document.observe('click', (function(e){ var target = e.findElement('a[rel^=lightbox]') || e.findElement('area[rel^=lightbox]'); if (target && target.href) { Event.stop(e); this.start(target); e.returnValue = false; e.preventDefault(); e.stopPropagation(); } }).bind(this));
Event.stop(e)
e.returnValue = false
e.preventDefault()
e.stopPropagation()
まったく効かず!
まったく効かない = aリンク先に遷移ということです。oh...
原因は不明ですがprototype.jsのせいでしょうね。対処法もありません。素直にprototype.jsに頼らず書くか、jquery使うかしてください。
(追記)
結局対処不能な問題なんだけど、どうしてこんなことがおきるのか。
おそらくdocument.observe('click', (function(e)のeのオブジェクトとaリンクの処理が紐ついてないのだろうな…このバージョンとIE9の組み合わせの時だけ…なぜw
aリンクをクリック→document.observe('click', (function(e)が発動→処理が終わったらhrefイベント実行
という流れになっている模様。まあ普通の流れ。
document.observeの命令内でJSエラーを起こせば止まるみたい。これも動作としては正しかった気がする。