我的插件使用以下方法将脚本排入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
.
最合适的回答,由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);
现在,我的脚本正确加载到页脚中。