2019-10-19 23:36:59 +03:00
|
|
|
// Polyfill to add support for preventScroll by focus function
|
|
|
|
|
|
|
|
if (HTMLElement.prototype.nativeFocus === undefined) {
|
|
|
|
(function () {
|
|
|
|
var supportsPreventScrollOption = false;
|
|
|
|
try {
|
|
|
|
var focusElem = document.createElement("div");
|
|
|
|
|
|
|
|
focusElem.addEventListener("focus", function(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
event.stopPropagation();
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
var opts = Object.defineProperty({}, "preventScroll", {
|
|
|
|
get: function () {
|
|
|
|
supportsPreventScrollOption = true;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
focusElem.focus(opts);
|
2019-11-27 14:13:16 +03:00
|
|
|
} catch (e) {
|
2020-02-16 03:44:43 +01:00
|
|
|
console.error("error checking preventScroll support");
|
2019-11-27 14:13:16 +03:00
|
|
|
}
|
2019-10-19 23:36:59 +03:00
|
|
|
|
|
|
|
if (!supportsPreventScrollOption) {
|
|
|
|
HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus;
|
|
|
|
|
|
|
|
HTMLElement.prototype.focus = function(options) {
|
|
|
|
var scrollX = window.scrollX;
|
|
|
|
var scrollY = window.scrollY;
|
|
|
|
|
|
|
|
this.nativeFocus();
|
|
|
|
|
|
|
|
// Restore window scroll if preventScroll
|
|
|
|
if (options && options.preventScroll) {
|
|
|
|
window.scroll(scrollX, scrollY);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
})();
|
|
|
|
}
|