mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
40 lines
1.2 KiB
JavaScript
40 lines
1.2 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) {}
|
||
|
|
||
|
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);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
})();
|
||
|
}
|