mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
// 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);
|
|
} catch (e) {
|
|
console.error("error checking preventScroll support");
|
|
}
|
|
|
|
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);
|
|
}
|
|
};
|
|
}
|
|
})();
|
|
}
|