WordPress.org

Make WordPress Core

Ticket #45053: 45053.diff

File 45053.diff, 1.6 KB (added by janthiel, 3 years ago)

Prevents elements without href attr being parsed, narrow down core selectors to not target them in the first place

  • src/js/_enqueues/wp/customize/preview.js

    diff --git src/js/_enqueues/wp/customize/preview.js src/js/_enqueues/wp/customize/preview.js
    index 4d971cc628..cda373664d 100644
     
    237237         * @returns {void}
    238238         */
    239239        api.addLinkPreviewing = function addLinkPreviewing() {
    240                 var linkSelectors = 'a[href], area';
     240                var linkSelectors = 'a[href], area[href]';
    241241
    242242                // Inject links into initial document.
    243243                $( document.body ).find( linkSelectors ).each( function() {
     
    337337        api.prepareLinkPreview = function prepareLinkPreview( element ) {
    338338                var queryParams, $element = $( element );
    339339
     340        // Skip elements with no href attribute. Check first to avoid more expensive checks down the road
     341        if ( ! element.hasAttribute( 'href' ) ) {
     342            return;
     343        }
     344
    340345                // Skip links in admin bar.
    341346                if ( $element.closest( '#wpadminbar' ).length ) {
    342347                        return;
     
    781786                        api.settings.changeset.uuid = uuid;
    782787
    783788                        // Update UUIDs in links and forms.
    784                         $( document.body ).find( 'a[href], area' ).each( function() {
     789                        $( document.body ).find( 'a[href], area[href]' ).each( function() {
    785790                                api.prepareLinkPreview( this );
    786791                        } );
    787792                        $( document.body ).find( 'form' ).each( function() {
     
    815820
    816821                        api.settings.changeset.autosaved = true; // Start deferring to any autosave once changeset is updated.
    817822
    818                         $( document.body ).find( 'a[href], area' ).each( function() {
     823                        $( document.body ).find( 'a[href], area[href]' ).each( function() {
    819824                                api.prepareLinkPreview( this );
    820825                        } );
    821826                        $( document.body ).find( 'form' ).each( function() {