Callback for preg_replace_callback.

Used to wrap inline JS in a function in order to defer the inline js code.

Paramètres

string $input: JavaScript code to wrap in setTimeout.

Return value

string Inline javascript code wrapped up in a loader.

2 calls to advagg_mod_defer_inline_js()
advagg_mod_ga_inline_to_file dans advagg_mod/advagg_mod.module
Move analytics.js to be a file instead of inline.
advagg_mod_inline_defer dans advagg_mod/advagg_mod.module
Defer inline js by using setTimeout.

Fichier

advagg_mod/advagg_mod.module, line 2869

Code

function advagg_mod_defer_inline_js($input) {
    if (variable_get('advagg_mod_js_defer_jquery', ADVAGG_MOD_JS_DEFER_JQUERY) !== FALSE && variable_get('jquery_update_jquery_cdn', 'none') !== 'none' && (stripos($input, 'jQuery') !== FALSE || strpos($input, '$(') !== FALSE || stripos($input, 'Drupal.') !== FALSE)) {
        $matches[2] = $matches[0] = $input;
        return advagg_mod_wrap_inline_js($matches);
    }
    // Get inline defer js skip list.
    list(, , , , , $inline_js_defer_skip_list) = advagg_mod_get_lists();
    if (!empty($inline_js_defer_skip_list)) {
        // If the line is on the skip list then do not inline the script.
        foreach ($inline_js_defer_skip_list as $string_to_check) {
            if (stripos($input, $string_to_check) !== FALSE) {
                return $input;
            }
        }
    }
    // Use a counter in order to create unique function names.
    static $counter;
    ++$counter;
    // JS wrapper code.
    $new = "\nfunction advagg_mod_defer_{$counter}() {\n  {$input};\n}\nwindow.setTimeout(advagg_mod_defer_{$counter}, 0);";
    return $new;
}