TinyMCE: ensure initialization runs in all cases on 'interactive' and 'complete' readyState.

Fixes a rare bug when the init code is inserted in the DOM after the page has finished loading.

Props Collizo4sky, azaozz.
Merges [51402] to the 5.8 branch.
Fixes #53632.
Built from https://develop.svn.wordpress.org/branches/5.8@51407


git-svn-id: http://core.svn.wordpress.org/branches/5.8@51018 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
desrosj 2021-07-12 13:29:00 +00:00
parent ed40b04676
commit 7e8542281a
2 changed files with 9 additions and 3 deletions

View File

@ -1663,7 +1663,8 @@ final class _WP_Editors {
?>
( function() {
var initialize = function() {
var initialized = [];
var initialize = function() {
var init, id, inPostbox, $wrap;
var readyState = document.readyState;
@ -1672,6 +1673,10 @@ final class _WP_Editors {
}
for ( id in tinyMCEPreInit.mceInit ) {
if ( initialized.indexOf( id ) > -1 ) {
continue;
}
init = tinyMCEPreInit.mceInit[id];
$wrap = tinymce.$( '#wp-' + id + '-wrap' );
inPostbox = $wrap.parents( '.postbox' ).length > 0;
@ -1679,9 +1684,10 @@ final class _WP_Editors {
if (
! init.wp_skip_init &&
( $wrap.hasClass( 'tmce-active' ) || ! tinyMCEPreInit.qtInit.hasOwnProperty( id ) ) &&
( ( inPostbox && readyState === 'complete' ) || ( ! inPostbox && readyState === 'interactive' ) )
( readyState === 'complete' || ( ! inPostbox && readyState === 'interactive' ) )
) {
tinymce.init( init );
initialized.push( id );
if ( ! window.wpActiveEditor ) {
window.wpActiveEditor = id;

View File

@ -13,7 +13,7 @@
*
* @global string $wp_version
*/
$wp_version = '5.8-RC2-51406';
$wp_version = '5.8-RC2-51407';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.