Is there any way to detect that a lower (DOM 0) event listener has prevented the default browser action?
It seems that IE8 and below don't propagate return false
into event.returnValue
. The following works on all other browsers.
...
<script>
function addListener(obj, type, listener) {
var w3c = 'addEventListener', ie = 'attachEvent';
if (obj[w3c]) obj[w3c](type, listener);
else if (obj[ie]) obj[ie]('on' + type, listener);
};
addListener(document, 'click', function(event) {
event = event || window.event;
if (event.defaultPrevented || event.returnValue === false ||
event.getPreventDefault && event.getPreventDefault()) {
return;
}
alert('Default action not prevented!');
});
</script>
...
<!-- THIS PART CANNOT BE CHANGED. -->
<a href="//foo.com" onclick="return confirm('Really leave page?');">click me</a>