1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00
jellyfin-web/src/legacy/focusPreventScroll.js
2023-07-06 13:39:48 -04:00

42 lines
1.3 KiB
JavaScript

// Polyfill to add support for preventScroll by focus function
if (HTMLElement.prototype.nativeFocus === undefined) {
(function () {
let supportsPreventScrollOption = false;
try {
const focusElem = document.createElement('div');
focusElem.addEventListener('focus', function(event) {
event.preventDefault();
event.stopPropagation();
}, true);
const opts = Object.defineProperty({}, 'preventScroll', {
get: function () {
supportsPreventScrollOption = true;
return null;
}
});
focusElem.focus(opts);
} catch {
// no preventScroll supported
}
if (!supportsPreventScrollOption) {
HTMLElement.prototype.nativeFocus = HTMLElement.prototype.focus;
HTMLElement.prototype.focus = function(options) {
const scrollX = window.scrollX;
const scrollY = window.scrollY;
this.nativeFocus();
// Restore window scroll if preventScroll
if (options?.preventScroll) {
window.scroll(scrollX, scrollY);
}
};
}
})();
}