diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index 58341a5152..4cbf104a83 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -30,7 +30,8 @@ * then it gets set by using `window.devicePixelRatio`. * @property {ol.Collection|Array.|undefined} interactions * Interactions that are initially added to the map. - * @property {Element|Document|undefined} keyboardEventTarget The element to listen to keyboard events on. + * @property {Element|Document|string|undefined} keyboardEventTarget + * The element to listen to keyboard events on. * This determines when the `KeyboardPan` and `KeyboardZoom` interactions trigger. For example, if * this option is set to `document` the keyboard interactions will always trigger. If this option * is not specified, the element the library listens to keyboard events on is the map target (i.e. diff --git a/src/ol/map.js b/src/ol/map.js index bb2b89be95..140a841f31 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -1336,8 +1336,14 @@ ol.Map.createOptionsInternal = function(options) { /** * @type {Element|Document} */ - var keyboardEventTarget = goog.isDef(options.keyboardEventTarget) ? - options.keyboardEventTarget : null; + var keyboardEventTarget = null; + if (goog.isDef(options.keyboardEventTarget)) { + // cannot use goog.dom.getElement because its argument cannot be + // of type Document + keyboardEventTarget = goog.isString(options.keyboardEventTarget) ? + document.getElementById(options.keyboardEventTarget) : + options.keyboardEventTarget; + } /** * @type {Object.}