意外的脚本加载顺序

时间:2014-05-12 作者:Mere Development

我试图让脚本按一定的顺序加载,并得到了意想不到的结果。我正在使用以下脚本:

function tallulah_scripts() {
  wp_enqueue_script( \'header-js\', get_template_directory_uri() . \'/js/header.min.js\', null, \'1.0\', false );
  wp_deregister_script(\'jquery\');
  wp_enqueue_script( \'footer-js\', get_template_directory_uri() . \'/js/footer.min.js\', null, \'1.0\', true );
  wp_enqueue_script( \'jquery\', get_template_directory_uri() . \'/js/jquery.min.js\', null, \'2.1.0\', true );
}
add_action( \'wp_enqueue_scripts\', \'tallulah_scripts\');
。。。当我加载页面时,脚本如下所示:

    <script type=\'text/javascript\' src=\'http://tallulah/wp-content/themes/tallulah/js/jquery.min.js?ver=2.1.0\'></script>
    <script type=\'text/javascript\' src=\'http://tallulah/wp-content/themes/tallulah/js/footer.min.js?ver=1.0\'></script>
  </body>
</html>
奇怪吧?我将如何强制页脚。先加载min.js?我尝试过这样设置依赖关系:

wp_enqueue_script( \'jquery\', get_template_directory_uri() . \'/js/jquery.min.js\', \'footer-js\', \'2.1.0\', true );
。。但似乎没有效果。有什么指示吗?

2 个回复
SO网友:asked Feb 12 \'12

简单修复代码不工作的原因是wp_enqueue_script() 函数应为array, 不是字符串。

只需更换\'footer-js\' 具有array(\'footer-js\') 它将发挥作用:

function tallulah_scripts() {
  wp_enqueue_script( \'header-js\', get_template_directory_uri() . \'/js/header.min.js\', null, \'1.0\', false );
  wp_deregister_script(\'jquery\');
  wp_enqueue_script( \'footer-js\', get_template_directory_uri() . \'/js/footer.min.js\', null, \'1.0\', true );
  wp_enqueue_script( \'jquery\', get_template_directory_uri() . \'/js/jquery.min.js\', array(\'footer-js\'), \'2.1.0\', true ); // Note the footer-js dependency
}
add_action( \'wp_enqueue_scripts\', \'tallulah_scripts\');
另一种解决方案不太常见(也不太推荐)的处理方法是输出自己的标记,将jQuery包含在任何您想要的地方。

第一步是在WordPress即将处理jQuery之前,从全局脚本数组中删除jQuery,我们使用print_scripts_array 筛选挂钩并从数组中删除jQuery条目。

第二步是响应一个自定义<script> 标记指向jQuery脚本,它可以使用任何操作挂钩进行响应,甚至可以手动放入任何模板文件(不推荐),在本例中,我使用wp_footer 使用低优先级挂钩,以便脚本插入到与wp_footer (基本上在这一页的最后)。

// Force remove default jQuery
add_filter(\'print_scripts_array\', \'remove_jquery\');
function remove_jquery($scripts) {
    $key = array_search(\'jquery\', $scripts);
    if ($key !== false) {
        unset($scripts[$key]);
    }
    return $scripts; 
}

// Print custom jQuery wherever you want
add_action(\'wp_footer\', \'print_custom_jquery\', 200);
function print_custom_jquery() {
    echo \'<script src="\'.get_template_directory_uri().\'/js/jquery.min.js"></script>\';
}

SO网友:pascalvgemert

查看以下url:http://www.trembl.org/codec/832/

它表示动作wp\\u enqueue\\u脚本有第三个参数(优先级)

--编辑--

如果需要在其他脚本之后加载脚本,我想您可以这样做:

function load_latests_scripts() {                           
    wp_enqueue_script( \'footer-js\', get_template_directory_uri() . \'/js/footer.min.js\', null, \'1.0\', true );

    // ... other scripts
}    
add_action(\'wp_enqueue_scripts\', \'load_latests_scripts\', 1);    // 1 is smaller than the default 10.
如果需要在其他脚本之前加载脚本,我想您可以这样做:

function load_first_scripts() {                         
    wp_enqueue_script( \'header-js\', get_template_directory_uri() . \'/js/header.min.js\', null, \'1.0\', false );

    // ... other scripts
}    
add_action(\'wp_enqueue_scripts\', \'load_first_scripts\', 20); // 20 is bigger than the default 10.

结束

相关推荐

JQuery AJAX添加了json2依赖吗?

我正在Wordpress中使用jQuery和AJAX开发投票系统。为了使这个投票系统工作,我需要在我的主题中使用jQuery。所以在我的函数中写下了代码。php。但出于某种原因,我的剧本什么都没做。Watch my full vote script here.所以我开始阅读抄本,发现here 要包含用于AJAX调用的jQuery,需要json2依赖项。有没有人有这方面的经验,可以告诉我需要如何包括这一点,因为jQuery已经在Wordpress中注册了,所以我是否需要再次注册jQuery并将json2依赖