1

より低い (DOM 0) イベントリスナーがデフォルトのブラウザーアクションを妨げていることを検出する方法はありますか?

IE8以下では「return false」が「event.returnValue」に反映されないようです。以下は、他のすべてのブラウザで機能します。

...

<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>
4

0 に答える 0