/** * Output experimental, request-optimized script and style dependencies. * * @param Upfront_CoreDependencies_Registry $deps Dependencies registry */ private function _output_experimental($deps) { $link_urls = json_encode(apply_filters('upfront-experiments-styles-debounce_dependency_load', $deps->get_styles())); $debug = $this->_debugger->is_active(Upfront_Debug::STYLE) ? 'class="upfront-debounced"' : ''; $link_tpl = json_encode('<link rel="stylesheet" href="%url%" type="text/css" media="all" ' . $debug . ' />'); $script_urls = json_encode(apply_filters('upfront-experiments-scripts-debounce_dependency_load', $deps->get_scripts())); $debug = $this->_debugger->is_active(Upfront_Debug::JS_TRANSIENTS) ? 'class="upfront-debounced"' : ''; $script_tpl = json_encode('<script type="text/javascript" src="%url%" ' . $debug . '></script>'); $callback_wrap_start = $callback_wrap_end = ''; $injection_root = 'head'; if (Upfront_OutputBehavior::has_experiments_level(Upfront_OutputBehavior::LEVEL_DEFAULT)) { $callback_wrap_start = '$(function () {'; $callback_wrap_end = '});'; } if (Upfront_OutputBehavior::has_experiments_level(Upfront_OutputBehavior::LEVEL_AGGRESSIVE)) { $callback_wrap_start = '$(function () { setTimeout(function () {'; $callback_wrap_end = '}, 500);});'; $injection_root = 'body'; } $injection_root = esc_js($injection_root); echo "<script type='text/javascript'>\r\n\t\t\t(function (\$) {\r\n\t\t\t{$callback_wrap_start}\r\n\t\t\t\tvar script_urls = {$script_urls},\r\n\t\t\t\t\tscript_tpl = {$script_tpl},\r\n\t\t\t\t\tlink_urls = {$link_urls},\r\n\t\t\t\t\tlink_tpl = {$link_tpl},\r\n\t\t\t\t\thead = \$('{$injection_root}')\r\n\t\t\t\t;\r\n\t\t\t\t\$.each(link_urls, function (idx, url) {\r\n\t\t\t\t\thead.append(link_tpl.replace(/%url%/, url));\r\n\t\t\t\t});\r\n\t\t\t\t\$.each(script_urls, function (idx, url) {\r\n\t\t\t\t\thead.append(script_tpl.replace(/%url%/, url));\r\n\t\t\t\t});\r\n\t\t\t{$callback_wrap_end}\r\n\t\t\t})(jQuery);\r\n\t\t</script>"; }