WordPress Version: 5.4
/**
* 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
* @since 4.7.0 Support for IE8 and below is explicitly removed via conditional comments.
*/
function wp_customize_support_script()
{
$admin_origin = parse_url(admin_url());
$home_origin = parse_url(home_url());
$cross_domain = strtolower($admin_origin['host']) != strtolower($home_origin['host']);
$type_attr = current_theme_supports('html5', 'script') ? '' : ' type="text/javascript"';
?>
<!--[if lte IE 8]>
<script<?php
echo $type_attr;
?>>
document.body.className = document.body.className.replace( /(^|\s)(no-)?customize-support(?=\s|$)/, '' ) + ' no-customize-support';
</script>
<![endif]-->
<!--[if gte IE 9]><!-->
<script<?php
echo $type_attr;
?>>
(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
}
?>
b[c] = b[c].replace( rcs, ' ' );
// The customizer requires postMessage and CORS (if the site is cross domain).
b[c] += ( window.postMessage && request ? ' ' : ' no-' ) + cs;
}());
</script>
<!--<![endif]-->
<?php
}