アプリケーションにグローバルモーダル「読み込み中、お待ちください」を入れました<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を次に示します。
アップデート
以下のベルギの答えは、私が探していたものです。ただし、defaultPreventedIE < 9 ではサポートされていないようです。IE < 9 でそれを達成するための同等/回避策はありますか?