将jQuery加载到页脚不起作用

时间:2017-01-04 作者:timholz

好吧,我试了一整天,不知道这是怎么回事。我有一个这样加载jquery的网站:

function my_script_loader() {
if (!is_admin()) { // only load for front end
    //Clear jQuery if already registered
    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', "http" . ($_SERVER[\'SERVER_PORT\'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js", array(), \'1.11.1\', \'\',true);
    wp_enqueue_script(\'jquery\');
    } // End of if statement
} // End of Function
add_action(\'wp_enqueue_scripts\', \'my_script_loader\');
Dom中的预期结果是:

<script type="text/javascript" defer="defer" src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
然后,我在另一个子域网站上做了完全相同的事情:

function script_loader() {
if (!is_admin()) {
    //Clear jQuery if already registered
    wp_deregister_script(\'jquery\');
    wp_register_script(\'jquery\', "http" . ($_SERVER[\'SERVER_PORT\'] == 443 ? "s" : "") . "://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js", array() , \'1.12.4\', \'\',true);
    wp_enqueue_script(\'jquery\');
    }
} // End of Function
add_action(\'wp_enqueue_scripts\', \'script_loader\');
Dom中的意外结果是:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js?ver=1.12.4">
我已禁用插件并删除了所有脚本,但脚本不会延迟。怎么会这样?感谢您的关注。西奥

2 个回复
最合适的回答,由SO网友:iguanarama 整理而成

Mark Kaplun 在评论中说,有些东西正在添加defer 到您的一个域的脚本。

如果希望子域jQuery脚本也具有defer, 这应该可以做到:

function my_add_defer ($tag, $handle, $src) {
    if ($handle == \'jquery\') {
        return str_replace (\' src=\', \' defer="defer" src=\', $tag);
    }
    return $tag;
}
add_filter (\'script_loader_tag\', \'my_add_defer\', 10, 3);

SO网友:timholz

这就是造成差异的原因,也是我错过的原因:

function defer_parsing_of_js ( $url ) {
if ( FALSE === strpos( $url, \'.js\' ) ) return $url;

return "$url\' defer=\'defer";
  }
add_filter( \'clean_url\', \'defer_parsing_of_js\', 11, 1 );

相关推荐