Make WordPress Core

Ticket #32109: 32109.3.diff

File 32109.3.diff, 4.0 KB (added by azaozz, 9 years ago)
  • src/wp-includes/js/wp-emoji-loader.js

     
    11( function( window, document, settings ) {
    2         var src;
     2        var src, ready;
    33
    44        /**
    55         * Detect if the browser supports rendering emoji or flag emoji. Flag emoji are a single glyph
     
    6262                flag:   browserSupportsEmoji( 'flag' )
    6363        };
    6464
     65        settings.DOMReady = false;
     66        settings.readyCallback = function() {
     67                settings.DOMReady = true;
     68        };
     69
    6570        if ( ! settings.supports.simple || ! settings.supports.flag ) {
     71                ready = function() {
     72                        settings.readyCallback();
     73                };
     74
     75                if ( document.addEventListener ) {
     76                        document.addEventListener( 'DOMContentLoaded', ready, false );
     77                        window.addEventListener( 'load', ready, false );
     78                } else {
     79                        window.attachEvent( 'onload', ready );
     80                        document.attachEvent( 'onreadystatechange', function() {
     81                                if ( 'complete' === document.readyState ) {
     82                                        settings.readyCallback();
     83                                }
     84                        } );
     85                }
     86
    6687                src = settings.source || {};
    6788
    6889                if ( src.concatemoji ) {
  • src/wp-includes/js/wp-emoji.js

     
    44                var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
    55
    66                /**
    7                  * Flag to determine if the browser and the OS support emoji.
    8                  *
    9                  * @since 4.2.0
    10                  *
    11                  * @var Boolean
    12                  */
    13                 supportsEmoji = false,
    14 
    15                 /**
    16                  * Flag to determine if the browser and the OS support flag (two character) emoji.
    17                  *
    18                  * @since 4.2.0
    19                  *
    20                  * @var Boolean
    21                  */
    22                 supportsFlagEmoji = false,
    23 
    24                 /**
    257                 * Flag to determine if we should replace emoji characters with images.
    268                 *
    279                 * @since 4.2.0
     
    3012                 */
    3113                replaceEmoji = false,
    3214
    33                 isIE8 = window.navigator.userAgent.indexOf( 'IE 8' ) !== -1,
    34 
    3515                // Private
    3616                twemoji, timer,
     17                loaded = false,
    3718                count = 0;
    3819
    3920                /**
     
    4223                 * @since 4.2.0
    4324                 */
    4425                function load() {
     26                        if ( loaded ) {
     27                                return;
     28                        }
     29
    4530                        if ( typeof window.twemoji === 'undefined' ) {
    4631                                // Break if waiting for longer than 30 sec.
    4732                                if ( count > 600 ) {
     
    5742                        }
    5843
    5944                        twemoji = window.twemoji;
     45                        loaded = true;
    6046
    6147                        if ( MutationObserver ) {
    6248                                new MutationObserver( function( mutationRecords ) {
     
    9682                 * @param {Object} args Additional options for Twemoji.
    9783                 */
    9884                function parse( object, args ) {
    99                         if ( ! replaceEmoji ) {
     85                        if ( ! replaceEmoji || ! twemoji ) {
    10086                                return object;
    10187                        }
    10288
     
    121107                                                        return false;
    122108                                        }
    123109
    124                                         if ( ! supportsFlagEmoji && supportsEmoji &&
     110                                        if ( ! settings.supports.flag && settings.supports.simple &&
    125111                                                ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
    126112
    127113                                                return false;
     
    132118                        } );
    133119                }
    134120
    135                 // Load when the readyState changes to 'interactive', not 'complete'.
    136                 function onLoad() {
    137                         if ( ( ! isIE8 && 'interactive' === document.readyState ) || ( isIE8 && 'complete' === document.readyState ) ) {
    138                                 load();
    139                         }
    140                 }
    141 
    142121                /**
    143122                 * Initialize our emoji support, and set up listeners.
    144123                 */
    145124                if ( settings ) {
    146                         supportsEmoji = window._wpemojiSettings.supports.simple;
    147                         supportsFlagEmoji = window._wpemojiSettings.supports.flag;
    148                         replaceEmoji = ! supportsEmoji || ! supportsFlagEmoji;
     125                        replaceEmoji = ! settings.supports.simple || ! settings.supports.flag;
    149126
    150                         if ( ( ! isIE8 && 'loading' === document.readyState ) || ( isIE8 && 'complete' !== document.readyState ) ) {
    151                                 if ( document.addEventListener ) {
    152                                         document.addEventListener( 'readystatechange', onLoad, false );
    153                                 } else if ( document.attachEvent ) {
    154                                         document.attachEvent( 'onreadystatechange', onLoad );
    155                                 }
     127                        if ( settings.DOMReady ) {
     128                                load();
    156129                        } else {
    157                                 load();
     130                                settings.readyCallback = load;
    158131                        }
    159132                }
    160133