测试jQuery或Prototype是否由另一个插件排队?

时间:2010-08-12 作者:artlung

在我的插件中,我想测试jQuery或Prototype(或两者)是否将由另一个插件加载。所以,有wp_enqueue_script(\'jquery\')wp_enqueue_script(\'prototype\') 已调用。

我在文件中有适合我的插件的代码plugin.prototype.jsplugin.jquery.js 如果原型已排队,我的插件将使用plugin.prototype.js. 这样我就避免了在站点中加载不必要的内容。如果两者都没有加载,我将排队,以较小者为准。

如何测试以查看已排队的内容?如何确保我的代码最后运行?

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

使用wp_script_is() 检查队列中是否有脚本。

function add_my_scripts() {
    $doing_jquery = wp_script_is(\'jquery\', \'queue\');
    $doing_prototype = wp_script_is(\'prototype\', \'queue\');

    var_dump($doing_jquery, $doing_prototype);
}
add_action(\'wp_print_scripts\', \'add_my_scripts\');

SO网友:Jan Fabry

要确保代码在加载jQuery或Prototype后运行,请使用$deps 参数到wp_enqueue_script, 然后通过其中一个array(\'jquery\')array(\'prototype\'). 如果想知道脚本是否在队列中,可以使用the query() method of WP_Dependencies (which is the superclass of WP_Scripts). 所以这样的方法应该有效:

global $wp_scripts;
$jQueryIsLoaded = (bool) $wp_scripts->query(\'jquery\');
$prototypeIsLoaded = (bool) $wp_scripts->query(\'prototype\');
当然,插件可能会在你决定一个插件后让它们排队,所以要确保你在最后一刻执行这个检查。

结束

相关推荐