アプリケーションにグローバルモーダル「読み込み中、お待ちください」を入れました<div>
。<a>
または<input type="button">
をクリックするたびに表示されます。<body>
これは、 でonclick
イベント ハンドラを割り当てることによって実現されます。これによりonload
、イベントが発生したときに実行されます。
<body onload="setup()">
<!-- No control over what will be here -->
</body>
<script>
function setup() {
document.getElementsByTagName('body')[0].onclick = clickFunc;
}
function clickFunc(eventData) {
var clickedElement = (window.event) ? event.srcElement : eventData.target;
if (someConditions) {
document.getElementById('modal').style.display = "block";
}
}
</script>
return false
これで、マークアップにいくつかのコンポーネントが含まれています (これについては制御できません) onclick
。confirm()
これにより、モーダルポップアップが表示され、ユーザーが拒否したときにそこにとどまります。event.preventDefault() vs. return falseで説明されているように、おそらくこれを処理する適切な方法はpreventDefault()
、イベントがバブルアップしないようにすることでした。
しかし、私はその部分を制御できないので、イベントハンドラーの以前の実行結果を(下位レベルで)知る方法(できれば非jquery +クロスブラウザー)はありますか?
<div>
そうでない場合は、コンポーネントonclick
に含まれている場合は常にモーダルを表示することを控える必要があると思いますreturn false
。
テスト用のJSFiddleを次に示します。
アップデート
以下のベルギの答えは、私が探していたものです。ただし、defaultPrevented
IE < 9 ではサポートされていないようです。IE < 9 でそれを達成するための同等/回避策はありますか?