【问题标题】:Combining calls to multiple javascripts组合对多个 javascript 的调用
【发布时间】:2011-03-12 16:57:01
【问题描述】:

我正在尝试使用(wordpress 功能)wp_enqueue_script 调用多个 JQuery 脚本。对 JQuery 的调用完美无缺,但对 cufon 的第二次调用却没有。我不是 php 或 javascript 专家 - 任何人都可以帮忙,是否有最佳实践方法?

function my_init_method() {
    if (!is_admin()) {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js');
        wp_enqueue_script( 'jquery' );
    }
}    

add_action('init', 'my_init_method');

function my_init_method2() {
    if (!is_admin()) {
        wp_deregister_script( 'cufon' );
        wp_register_script( 'cufon', 'http://mydomain.com/wp-content/themes/simplefolio/js/cufon-yui.js');
        wp_enqueue_script( 'cufon' );
    }
}    

add_action('init', 'my_init_method2');

【问题讨论】:

  • 需要更多细节。 “第二个电话不起作用”是什么意思?它以什么方式失败? cufon 脚本的 URL 是否有效(尝试像普通网页一样加载它以查看)?浏览器控制台中有任何错误消息吗?链接到演示问题的页面怎么样?
  • 你真的需要2个js框架吗?

标签: php javascript jquery wordpress


【解决方案1】:

我选择的 deregister_script 和 enqueue_script 方法如下(请根据您的需要随意调整):

    function my_deregister_javascript() {
    wp_deregister_script ( 'jquery-ui-tabs' );
    wp_deregister_script ( 'jquery-ui-core' );
    wp_deregister_script ( 'jquery-cycle' );
    wp_deregister_script ( 'hoverintent' );
    wp_deregister_script ( 'superfish' );
    wp_deregister_script ( 'jquery-validate' );
    wp_deregister_script ( 'arras_add_header_js' );
    wp_deregister_script ( 'arras_add_slideshow_js' );
    wp_deregister_script ( 'ratings_scripts' );
    wp_deregister_script ( 'wp-postratings' );
    wp_deregister_script ( 'sharing-js' );
    wp_deregister_script ( 'jquery' );
    wp_enqueue_script ('jquery', '/js/mymusicplug.js', '', '1.4.4');
}
if ( !is_admin() ) {
add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );
}

如您所见,我的“if (!is_admin())”与脚本“输出”相关。我也取消注册而没有注册 - 通过 wp_register_script 注册脚本会导致完全崩溃 - 然后将组合/缩小的 JS 所在的脚本文件排入队列。这对我来说绝对有用,结果是 143,000+ b JS 文件。我知道,它可能看起来像是 JS 文件上的一个沉重的标签,但随着通过“deregister_script”在 WP 中组合 JS 等事情的简化,它使我的页面减少了超过 30 多个本地和外部 JS 的 HTTP 请求。我页面上最重的 JS 现在涉及页脚中的分析和 AdSense 代码。尽管如此,我只收到了大约 10-15 个请求。

很棒的提示:也结合 CSS,1 个 CSS 文件,1 个 JS 文件,你的页面会飞起来!

希望这会有所帮助。

【讨论】:

  • 谢谢伙计,这很有帮助。我试图将所有脚本正确排入队列的原因是我想实现“JS & CSS Script Optimizer”插件,这样我就不必手动组合所有文件。花了我一段时间,但我到了那里!
【解决方案2】:

我不完全确定您在这里寻找什么,但看起来您可以通过组合两个 init 语句来简化事情

function my_init_method() {
    if (!is_admin()) {
        wp_deregister_script( 'jquery' );
        wp_register_script( 'jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js');
        wp_enqueue_script( 'jquery' );
        wp_deregister_script( 'cufon' );
        wp_register_script( 'cufon', 'http://mydomain.com/wp-content/themes/simplefolio/js/cufon-yui.js');
        wp_enqueue_script( 'cufon' );
    }
}    

add_action('init', 'my_init_method');

您还应该确保http://mydomain.com/wp-content/themes/simplefolio/js/cufon-yui.js 文件存在并且可以从您的浏览器访问。

【讨论】:

  • 谢谢伙计,事实证明我误解了取消注册功能——它只需要包含在 wordpress 中的脚本——因为 cufon 并不是阻止脚本加载。感谢您的帮助!
猜你喜欢
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 2010-09-16
  • 1970-01-01
  • 2019-06-28
相关资源
最近更新 更多