Make WordPress Core

Changeset 46786 for trunk


Ignore:
Timestamp:
11/26/2019 06:19:54 PM (5 years ago)
Author:
ianbelanger
Message:

Bundled Themes: Fixes JS TypeError in Twenty Twenty.

On mobile devices using a webkit browser, the menu and search modals could not be opened due to a TypeError: document.body is null. This commit fixes that issue by adding a touch-enabled class to the body for browsers that do not support media queries.

Props quicoto, poena, Boga86, acosmin, macmanx.
Fixes #48601.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-content/themes/twentytwenty/assets/js/index.js

    r46701 r46786  
    7272// Add a class to the body for when touch is enabled for browsers that don't support media queries
    7373// for interaction media features. Adapted from <https://codepen.io/Ferie/pen/vQOMmO>
    74 ( function() {
    75     var matchMedia = function() {
    76         // Include the 'heartz' as a way to have a non matching MQ to help terminate the join. See <https://git.io/vznFH>.
    77         var prefixes = [ '-webkit-', '-moz-', '-o-', '-ms-' ];
    78         var query = [ '(', prefixes.join( 'touch-enabled),(' ), 'heartz', ')' ].join( '' );
    79         return window.matchMedia && window.matchMedia( query ).matches;
    80     };
    81 
    82     if ( ( 'ontouchstart' in window ) || ( window.DocumentTouch && document instanceof window.DocumentTouch ) || matchMedia() ) {
    83         document.body.classList.add( 'touch-enabled' );
    84     }
    85 }() );
     74twentytwenty.touchEnabled = {
     75
     76    init: function() {
     77        var matchMedia = function() {
     78            // Include the 'heartz' as a way to have a non matching MQ to help terminate the join. See <https://git.io/vznFH>.
     79            var prefixes = [ '-webkit-', '-moz-', '-o-', '-ms-' ];
     80            var query = [ '(', prefixes.join( 'touch-enabled),(' ), 'heartz', ')' ].join( '' );
     81            return window.matchMedia && window.matchMedia( query ).matches;
     82        };
     83
     84        if ( ( 'ontouchstart' in window ) || ( window.DocumentTouch && document instanceof window.DocumentTouch ) || matchMedia() ) {
     85            document.body.classList.add( 'touch-enabled' );
     86        }
     87    }
     88}; // twentytwenty.touchEnabled
    8689
    8790/*  -----------------------------------------------------------------------------------------------
     
    746749    twentytwenty.modalMenu.init();  // Modal Menu
    747750    twentytwenty.primaryMenu.init();    // Primary Menu
     751    twentytwenty.touchEnabled.init();   // Add class to body if device is touch-enabled
    748752} );
    749753
Note: See TracChangeset for help on using the changeset viewer.