mirror of
https://github.com/WordPress/WordPress.git
synced 2025-02-27 10:08:27 +00:00
Theme Customizer: Add CORS checks to the initial check for customize support. Prevents flash of customize links on large pages. see #20582, #19910.
Add wp_customize_support_script(), to quickly alter the body class based on whether customize is supported. git-svn-id: http://core.svn.wordpress.org/trunk@20893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
bff286c100
commit
d8abece877
@ -97,15 +97,10 @@ $admin_body_class .= ' no-customize-support';
|
|||||||
<body class="wp-admin no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
|
<body class="wp-admin no-js <?php echo apply_filters( 'admin_body_class', '' ) . " $admin_body_class"; ?>">
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
document.body.className = document.body.className.replace('no-js','js');
|
document.body.className = document.body.className.replace('no-js','js');
|
||||||
<?php
|
|
||||||
// If the customize loader is enqueued, then add the 'customize-support' class early.
|
|
||||||
// This prevents a flash of unstyled content.
|
|
||||||
if ( wp_script_is( 'customize-loader', 'queue' ) ) : ?>
|
|
||||||
if ( window.postMessage )
|
|
||||||
document.body.className = document.body.className.replace('no-customize-support','customize-support');
|
|
||||||
<?php endif; ?>
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<?php wp_customize_support_script(); ?>
|
||||||
|
|
||||||
<div id="wpwrap">
|
<div id="wpwrap">
|
||||||
<?php require(ABSPATH . 'wp-admin/menu-header.php'); ?>
|
<?php require(ABSPATH . 'wp-admin/menu-header.php'); ?>
|
||||||
<div id="wpcontent">
|
<div id="wpcontent">
|
||||||
|
@ -1618,3 +1618,44 @@ add_action( 'admin_enqueue_scripts', '_wp_customize_loader_settings' );
|
|||||||
function wp_customize_url( $stylesheet ) {
|
function wp_customize_url( $stylesheet ) {
|
||||||
return esc_url( admin_url( 'customize.php' ) . '?theme=' . $stylesheet );
|
return esc_url( admin_url( 'customize.php' ) . '?theme=' . $stylesheet );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prints a script to check whether or not the customizer is supported,
|
||||||
|
* and apply either the no-customize-support or customize-support class
|
||||||
|
* to the body.
|
||||||
|
*
|
||||||
|
* This function MUST be called inside the body tag.
|
||||||
|
*
|
||||||
|
* Ideally, call this function immediately after the body tag is opened.
|
||||||
|
* This prevents a flash of unstyled content.
|
||||||
|
*
|
||||||
|
* It is also recommended that you add the "no-customize-support" class
|
||||||
|
* to the body tag by default.
|
||||||
|
*
|
||||||
|
* @since 3.4.0
|
||||||
|
*/
|
||||||
|
function wp_customize_support_script() {
|
||||||
|
if ( ! wp_script_is( 'customize-loader', 'queue' ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
$admin_origin = parse_url( admin_url() );
|
||||||
|
$home_origin = parse_url( home_url() );
|
||||||
|
$cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) );
|
||||||
|
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
(function() {
|
||||||
|
var request, b = document.body, c = 'className', cs = 'customize-support', rcs = new RegExp('(^|\\s+)(no-)?'+cs+'(\\s+|$)');
|
||||||
|
|
||||||
|
<?php if ( $cross_domain ): ?>
|
||||||
|
request = (function(){ var xhr = new XMLHttpRequest(); return ('withCredentials' in xhr); })();
|
||||||
|
<?php else: ?>
|
||||||
|
request = true;
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
b[c] = b[c].replace( rcs, '' );
|
||||||
|
b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
|
<?php
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user