richard pushed to branch base-browser-115.3.1esr-13.0-1 at The Tor Project / Applications / Tor Browser
Commits:
-
3d78c742
by Henry Wilkes at 2023-10-11T18:30:21+00:00
1 changed file:
Changes:
... | ... | @@ -482,14 +482,23 @@ async function scrollAndHighlight(subcategory, category) { |
482 | 482 | |
483 | 483 | // We assign a tabindex=-1 to the element so that we can focus it. This allows
|
484 | 484 | // us to move screen reader's focus to an arbitrary position on the page.
|
485 | - // See tor-browser#41454 and bug 1799153.
|
|
486 | - element.setAttribute("tabindex", "-1");
|
|
487 | - // The element is not always immediately focusable, so we wait until the next
|
|
488 | - // loop.
|
|
489 | - setTimeout(() => {
|
|
485 | + // See tor-browser#41454 and mozilla bug 1799153.
|
|
486 | + const doFocus = () => {
|
|
487 | + element.setAttribute("tabindex", "-1");
|
|
490 | 488 | Services.focus.setFocus(element, Services.focus.FLAG_NOSCROLL);
|
489 | + // Immediately remove again now that it has focus.
|
|
491 | 490 | element.removeAttribute("tabindex");
|
492 | - });
|
|
491 | + };
|
|
492 | + // The element is not always immediately focusable, so we wait until document
|
|
493 | + // load.
|
|
494 | + if (document.readyState === "complete") {
|
|
495 | + doFocus();
|
|
496 | + } else {
|
|
497 | + // Wait until document load to move focus.
|
|
498 | + // NOTE: This should be called after DOMContentLoaded, where the searchInput
|
|
499 | + // is focused.
|
|
500 | + window.addEventListener("load", doFocus, { once: true });
|
|
501 | + }
|
|
493 | 502 | |
494 | 503 | scrollContentTo(header);
|
495 | 504 | element.classList.add("spotlight");
|