[wp-trac] [WordPress Trac] #55143: Twenty Twenty One: focus position jumps when opening popup
WordPress Trac
noreply at wordpress.org
Thu Sep 15 23:03:03 UTC 2022
#55143: Twenty Twenty One: focus position jumps when opening popup
-------------------------------+------------------------------
Reporter: paaljoachim | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Bundled Theme | Version:
Severity: normal | Resolution:
Keywords: reporter-feedback | Focuses: javascript
-------------------------------+------------------------------
Description changed by joedolson:
Old description:
> The following was noticed in this My Calendar Github issue:
> https://github.com/joedolson/my-calendar/issues/374
>
> Twenty Twenty One contains code that intercepts all anchor links
> containing a '#' and moves scroll position to that link. This causes an
> undesirable focus position movement for any link containing a '#'
> character that is not intended to move focus.
>
> ```
> /**
> * Close menu and scroll to anchor when an anchor link is
> clicked.
> * Adapted from Twenty Twenty.
> *
> * @since Twenty Twenty-One 1.1
> */
> document.addEventListener( 'click', function( event ) {
> // If target onclick is <a> with # within the
> href attribute
> if ( event.target.hash &&
> event.target.hash.includes( '#' ) ) {
> wrapper.classList.remove( id +
> '-navigation-open', 'lock-scrolling' );
> twentytwentyoneToggleAriaExpanded(
> mobileButton );
> // Wait 550 and scroll to the anchor.
> setTimeout(function () {
> var anchor =
> document.getElementById(event.target.hash.slice(1));
> anchor.scrollIntoView();
> }, 550);
> }
> } );
> ```
>
> This code adds a listener to all links that scrolls to that target
> anchor. For any case where a link is used to open a modal, an accordion,
> or as a faux-button in any way while containing a hash character, this
> will cause problems.
New description:
The following was noticed in this My Calendar Github issue:
https://github.com/joedolson/my-calendar/issues/374
Twenty Twenty One contains code that intercepts all anchor links
containing a '#' and moves scroll position to that link. This causes an
undesirable focus position movement for any link containing a '#'
character that is not intended to move focus.
{{{
/**
* Close menu and scroll to anchor when an anchor link is
clicked.
* Adapted from Twenty Twenty.
*
* @since Twenty Twenty-One 1.1
*/
document.addEventListener( 'click', function( event ) {
// If target onclick is <a> with # within the href
attribute
if ( event.target.hash &&
event.target.hash.includes( '#' ) ) {
wrapper.classList.remove( id +
'-navigation-open', 'lock-scrolling' );
twentytwentyoneToggleAriaExpanded(
mobileButton );
// Wait 550 and scroll to the anchor.
setTimeout(function () {
var anchor =
document.getElementById(event.target.hash.slice(1));
anchor.scrollIntoView();
}, 550);
}
} );
}}}
This code adds a listener to all links that scrolls to that target anchor.
For any case where a link is used to open a modal, an accordion, or as a
faux-button in any way while containing a hash character, this will cause
problems.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/55143#comment:5>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list