Check if getElement() is undefined before adding focus listener (Canvas) (#8498)

This commit is contained in:
Florian Bischof
2022-10-01 11:10:14 +02:00
committed by Vladimir Agafonkin
parent 00416a546f
commit 579c90d271
2 changed files with 24 additions and 6 deletions

View File

@ -110,4 +110,16 @@ describe('Rectangle', function () {
expect(rectangle.getLatLngs()).to.eql(rectangle._latlngs); expect(rectangle.getLatLngs()).to.eql(rectangle._latlngs);
}); });
}); });
describe("#Canvas", function () {
it("doesn't apply `focus` listener if element is undefined", function () {
map.remove();
map = L.map(container, {renderer: L.canvas()});
map.setView([0, 0], 6);
expect(function () {
L.polygon([[[2, 3], [4, 5]]]).addTo(map).bindTooltip('test');
}).to.not.throwException();
});
});
}); });

View File

@ -387,15 +387,21 @@ Layer.include({
}, },
_addFocusListenersOnLayer: function (layer) { _addFocusListenersOnLayer: function (layer) {
DomEvent.on(layer.getElement(), 'focus', function () { var el = layer.getElement();
this._tooltip._source = layer; if (el) {
this.openTooltip(); DomEvent.on(el, 'focus', function () {
}, this); this._tooltip._source = layer;
DomEvent.on(layer.getElement(), 'blur', this.closeTooltip, this); this.openTooltip();
}, this);
DomEvent.on(el, 'blur', this.closeTooltip, this);
}
}, },
_setAriaDescribedByOnLayer: function (layer) { _setAriaDescribedByOnLayer: function (layer) {
layer.getElement().setAttribute('aria-describedby', this._tooltip._container.id); var el = layer.getElement();
if (el) {
el.setAttribute('aria-describedby', this._tooltip._container.id);
}
}, },