Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE HTML>
<meta charset="utf-8">
<title>passive event listener + Event.returnValue</title>
<!--
Based on https://github.com/w3c/web-platform-tests/blob/master/dom/events/AddEventListenerOptions-passive.html
Copyright W3C, et al.
License:
W3C 3-clause BSD License
https://github.com/w3c/web-platform-tests/blob/master/LICENSE.md
-->
<script src="http://w3c-test.org/resources/testharness.js"></script>
<script src="http://w3c-test.org/resources/testharnessreport.js"></script>
<div id="log"></div>
<script>
test(function() {
  var supportsPassive = false;
  var query_options = {
    get passive() {
      supportsPassive = true;
      return false;
    },
    get dummy() {
      assert_unreached("dummy value getter invoked");
      return false;
    }
  };
  document.addEventListener('test_event', null, query_options);
  assert_true(supportsPassive, "addEventListener doesn't support the passive option");
  supportsPassive = false;
  document.removeEventListener('test_event', null, query_options);
  assert_false(supportsPassive, "removeEventListener supports the passive option when it should not");
}, "Supports passive option on addEventListener only");
function testPassiveValueOnReturnValue(optionsValue, expectedDefaultPrevented) {
  var defaultPrevented = undefined;
  var handler = function handler(e) {
    assert_false(e.defaultPrevented, "Event prematurely marked defaultPrevented");
    e.returnValue = false;
    defaultPrevented = e.defaultPrevented;
  }
  document.addEventListener('test', handler, optionsValue);
  var uncanceled = document.body.dispatchEvent(new Event('test', {bubbles: true, cancelable: true}));
  assert_equals(defaultPrevented, expectedDefaultPrevented, "Incorrect defaultPrevented for options: " + JSON.stringify(optionsValue));
  assert_equals(uncanceled, !expectedDefaultPrevented, "Incorrect return value from dispatchEvent");
  document.removeEventListener('test', handler, optionsValue);
}
test(function() {
  testPassiveValueOnReturnValue(undefined, true);
  testPassiveValueOnReturnValue({}, true);
  testPassiveValueOnReturnValue({passive: false}, true);
  testPassiveValueOnReturnValue({passive: true}, false);
  testPassiveValueOnReturnValue({passive: 0}, true);
  testPassiveValueOnReturnValue({passive: 1}, false);
}, "returnValue should be ignored if-and-only-if the passive option is true");
</script>
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers