Make WordPress Core

Changeset 32361


Ignore:
Timestamp:
05/06/2015 01:34:41 AM (10 years ago)
Author:
azaozz
Message:

Emoji:

  • Fix loading errors in IE9 and IE10.
  • Add fallbacks for the loading events.

Fixes #32109 for 4.2.

Location:
branches/4.2/src/wp-includes/js
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/4.2/src/wp-includes/js/wp-emoji-loader.js

    r31876 r32361  
    11( function( window, document, settings ) {
    2     var src;
     2    var src, ready;
    33
    44    /**
     
    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
  • branches/4.2/src/wp-includes/js/wp-emoji.js

    r32360 r32361  
    33    function wpEmoji() {
    44        var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver,
    5 
    6         /**
    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,
    235
    246        /**
     
    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
     
    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.
     
    5843
    5944            twemoji = window.twemoji;
     45            loaded = true;
    6046
    6147            if ( MutationObserver ) {
     
    10894         */
    10995        function parse( object, args ) {
    110             if ( ! replaceEmoji ) {
     96            if ( ! replaceEmoji || ! twemoji ) {
    11197                return object;
    11298            }
     
    133119                    }
    134120
    135                     if ( ! supportsFlagEmoji && supportsEmoji &&
     121                    if ( ! settings.supports.flag && settings.supports.simple &&
    136122                        ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
    137123
     
    144130        }
    145131
    146         // Load when the readyState changes to 'interactive', not 'complete'.
    147         function onLoad() {
    148             if ( ( ! isIE8 && 'interactive' === document.readyState ) || ( isIE8 && 'complete' === document.readyState ) ) {
    149                 load();
    150             }
    151         }
    152 
    153132        /**
    154133         * Initialize our emoji support, and set up listeners.
    155134         */
    156135        if ( settings ) {
    157             supportsEmoji = window._wpemojiSettings.supports.simple;
    158             supportsFlagEmoji = window._wpemojiSettings.supports.flag;
    159             replaceEmoji = ! supportsEmoji || ! supportsFlagEmoji;
     136            replaceEmoji = ! settings.supports.simple || ! settings.supports.flag;
    160137
    161             if ( ( ! isIE8 && 'loading' === document.readyState ) || ( isIE8 && 'complete' !== document.readyState ) ) {
    162                 if ( document.addEventListener ) {
    163                     document.addEventListener( 'readystatechange', onLoad, false );
    164                 } else if ( document.attachEvent ) {
    165                     document.attachEvent( 'onreadystatechange', onLoad );
    166                 }
     138            if ( settings.DOMReady ) {
     139                load();
    167140            } else {
    168                 load();
     141                settings.readyCallback = load;
    169142            }
    170143        }
Note: See TracChangeset for help on using the changeset viewer.