39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
test(() => {
|
|
// See https://dom.spec.whatwg.org/#dom-event-eventphase.
|
|
const CAPTURING_PHASE = 1;
|
|
const BUBBLING_PHASE = 3;
|
|
|
|
// First, create a div underneath the `<body>` element. It will be the
|
|
// dispatch target for synthetic click events.
|
|
const target =
|
|
document.querySelector('body').appendChild(document.createElement('div'));
|
|
|
|
const body = document.querySelector('body');
|
|
const captureObservable = body.when('click', {capture: true});
|
|
const bubbleObservable = body.when('click', {capture: false});
|
|
|
|
const results = [];
|
|
captureObservable.subscribe(e => results.push(e.eventPhase));
|
|
bubbleObservable.subscribe(e => results.push(e.eventPhase));
|
|
|
|
target.dispatchEvent(new MouseEvent('click', {bubbles: true}));
|
|
|
|
assert_array_equals(results, [CAPTURING_PHASE, BUBBLING_PHASE]);
|
|
}, "EventTarget Observables can listen for events in the capturing or bubbling phase");
|
|
|
|
test(() => {
|
|
const target = new EventTarget();
|
|
|
|
const observable = target.when('event', {passive: true});
|
|
observable.subscribe(event => {
|
|
assert_false(event.defaultPrevented);
|
|
// Should do nothing, since `observable` is "passive".
|
|
event.preventDefault();
|
|
assert_false(event.defaultPrevented);
|
|
});
|
|
|
|
// Create a cancelable event which ordinarily would be able to have its
|
|
// "default" prevented.
|
|
const event = new Event('event', {cancelable: true});
|
|
target.dispatchEvent(event);
|
|
}, "EventTarget Observables can be 'passive'");
|