Package Exports
- focus-options-polyfill
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (focus-options-polyfill) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
focus-options-polyfill
JavaScript polyfill for focusOptions
, an optional property passed to HTMLElement.focus()
that contains the preventScroll
boolean, which controls whether the browser should prevent a focused element from being scrolled into view.
Current support
https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option
Docs
WHATWG Spec
https://html.spec.whatwg.org/multipage/interaction.html#dom-focusoptions-preventscroll
MDN Web Docs - focus
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus
Intents to implement
Chrome/Chromium: Chrome Platform Status issue 734166 - Prevent scrolling in HTMLElement.focus()
Edge: Issue 14314565 - Enable ability to prevent scrolling in Element.focus()
Firefox: Bug 1374045 - Consider adding support for customizing scrolling behavior with Element.focus
Safari: WebKit Bug 178583 - Enable ability to prevent scrolling in Element.focus()
document.scrollingElement
This polyfill uses a basic fallback for the document.scrollingElement property, using document.documentElement
when not found.
This could suffice in basic cases, but if you need wider and/or specific support you should refer to a polyfill for it:
Also, to overcome its absence if you are executing this polyfill through jsdom
, you could place this in your setup:
document.scrollingElement = document.documentElement
More context about this property can be found in:
- https://developer.mozilla.org/en-US/docs/Web/API/Document/scrollingElement
- https://developer.mozilla.org/en-US/docs/Web/HTML/Quirks_Mode_and_Standards_Mode
- https://developer.mozilla.org/en-US/docs/Web/API/Document/documentElement
Dev and testing
To check this polyfill you can do:
npm run dev
to launch a small page that will check browser/polyfill behaviour.