依赖jQuery的脚本忽略$in_footer bool,并且在页眉中不起作用

时间:2019-05-03 作者:Ryszard Jędraszyk

我的插件使用以下方法将脚本排入jQuery依赖项中:

wp_enqueue_script( $plugin_short_slug, plugins_url() . \'/\' . $plugin_slug . \'/js/\' . $plugin_slug . \'.js\', \'\', array(\'jquery\'), \'\', true);
如果我在子主题中使用它,在子主题中我将默认WordPress jQuery出列并从页脚中的CDN加载jQuery,那么jQuery和我的脚本都会落在页脚中,并且工作正常。

不幸的是,当我在默认主题上使用插件时,默认的WordPress jQuery加载在标题中,$in_footer 被忽略,脚本显示在jQuery之后的标头中,尽管控制台中没有错误,但仍无法工作。

我不想替换默认jQuery,甚至不想将其移动到页脚,因为它可能会破坏用户的其他功能。

我的剧本如下:,phpVars 在本地化脚本中正确传递,在生成的HTML中:

var timeout;

jQuery(\'div.woocommerce\').on(\'change\', \'.qty\', function(){
    if (timeout != undefined) clearTimeout(timeout);        
    timeout = setTimeout(function() {
        jQuery(\'[name="update_cart"]\').trigger(\'click\');
    }, phpVars.acau_update_delay );
});

EDIT:

显然,jQuery依赖性并没有什么区别,如果我指定一个空数组,插件脚本仍然加载在jQuery下面的头中,并且不起作用,这次只使用版本参数,而不是同时使用版本和jQuery?ver%5B0%5D=jquery.

1 个回复
最合适的回答,由SO网友:Ryszard Jędraszyk 整理而成

我加了一个额外的参数\'\' 依赖项参数之前:

wp_enqueue_script( $plugin_short_slug, plugins_url() . \'/\' . $plugin_slug . \'/js/\' . $plugin_slug . \'.js\', \'\', array(\'jquery\'), \'\', true);
应为:

wp_enqueue_script( $plugin_short_slug, plugins_url() . \'/\' . $plugin_slug . \'/js/\' . $plugin_slug . \'.js\', array(\'jquery\'), \'\', true);
现在,我的脚本正确加载到页脚中。

相关推荐