Merge pull request #10159 from ejn/bugfix/10158-target-name-collision

Fix target name collision in event.Target and Control
This commit is contained in:
Andreas Hocevar
2019-10-22 09:53:19 +02:00
committed by GitHub
2 changed files with 24 additions and 2 deletions

View File

@@ -40,7 +40,7 @@ class Target extends Disposable {
* @private
* @type {*}
*/
this.target_ = opt_target;
this.eventTarget_ = opt_target;
/**
* @private
@@ -96,7 +96,7 @@ class Target extends Disposable {
const evt = typeof event === 'string' ? new Event(event) : event;
const type = evt.type;
if (!evt.target) {
evt.target = this.target_ || this;
evt.target = this.eventTarget_ || this;
}
const listeners = this.listeners_[type];
let propagate;

View File

@@ -54,3 +54,25 @@ describe('ol.control.Control\'s target', function() {
});
});
});
describe('ol.control.Control\'s event target', function() {
it('is the Control when the Control uses the default target', function() {
const ctrl = new Control({element: document.createElement('div')});
ctrl.on('test-event', function(e) {
expect(e.target).to.be(ctrl);
});
ctrl.dispatchEvent('test-event');
ctrl.dispose();
});
it('is the Control when the Control has a custom target', function() {
const ctrl = new Control({
element: document.createElement('div'),
target: document.createElement('div')
});
ctrl.on('test-event', function(e) {
expect(e.target).to.be(ctrl);
});
ctrl.dispatchEvent('test-event');
ctrl.dispose();
});
});