第三方JS文件的“拦截”查询

时间:2022-01-09 作者:Faye D.

我正在使用第三方插件,但我need 加载插件特定JS文件的非精简版本,避免一些图像预加载缓存;在预加载某些图像时的AJAX调用中,缩小的JS使用paramcache:!0 这破坏了我需要的特定功能。。。

因此,插件中的相关代码如下:

        wp_enqueue_script( \'woo-variation-gallery\', esc_url( $this->assets_uri( "/js/frontend{$suffix}.js" ) ), array(
            \'jquery\',
            \'wp-util\',
            \'woo-variation-gallery-slider\',
            \'imagesloaded\',
            \'wc-add-to-cart-variation\'
        ), $this->version(), true );
在哪里$suffix 计算结果略高于(这基本上是每个插件的标准)如下:

        $suffix = defined( \'SCRIPT_DEBUG\' ) && SCRIPT_DEBUG ? \'\' : \'.min\';
所以,我暂时通过设置SCRIPT_DEBUGtrue 在我的wp配置中。php,但只为需要加载到其非精简版本中的单个脚本在站点范围内加载非精简脚本是不对的。。。

那么,在对脚本排队时,是否有任何钩子需要在我的函数中钩住。php文件,以替换脚本的$src 从插件的/js/frontend.min.js/js/frontend.min.js 加载之前?

1 个回复
SO网友:Faye D.

我可以通过让缩小的JS正常加载,然后取消注册和排队,最后让非缩小的JS排队来处理这个问题。。。虽然我个人认为这是一种间接的方法,但这可能是唯一的方法,因为显然没有办法连接到最初将脚本排队的过程中。。。

因此,我的解决方案受到了@TomJNowell对我的问题的评论的启发answer 还有一个问题!

所以我使用的代码是:

add_action(\'wp_enqueue_scripts\', \'wvg_load_non_minified_js\', 10, 0);
function wvg_load_non_minified_js()
{
    wp_deregister_script(\'woo-variation-gallery\');
    wp_dequeue_script(\'woo-variation-gallery\');

    wp_enqueue_script(\'woo-variation-gallery\', esc_url(plugins_url() . \'/woo-variation-gallery/assets/js/frontend.js\'), array(
        \'jquery\',
        \'wp-util\',
        \'woo-variation-gallery-slider\',
        \'imagesloaded\',
        \'wc-add-to-cart-variation\',
    ), WOO_VG_VERSION, true);
}