1

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>
Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Brian
  • 2,342
  • 2
  • 23
  • 18

0 Answers0