延迟所有的js,函数.php文件中的某些js除外

时间:2014-03-26 作者:Nate M.

我读过How to add defer="defer" tag in plugin javascripts? toscho发布的代码可以很好地延迟某些js文件,或者通过注释contact-form-7行延迟所有js文件,但我需要延迟除1或2个文件以外的所有js。我确实需要排除jquery。因为它会导致旋转滑块插件在延迟时停止工作。

那么,我如何在下面的代码中编写一个条件来排除某些js文件呢?例如,如果我想排除jquery。min和jquery。用户界面。果心最小值

function add_defer_to_cf7( $url )
    {
        if ( // comment the following line out add \'defer\' to all scripts
        FALSE === strpos( $url, \'contact-form-7\' ) or
        FALSE === strpos( $url, \'.js\' )
        )
        { // not our file
            return $url;
        }
        // Must be a \', not "!
        return "$url\' defer=\'defer";
    }
    add_filter( \'clean_url\', \'add_defer_to_cf7\', 11, 1 );

2 个回复
最合适的回答,由SO网友:AddWeb Solution Pvt Ltd 整理而成

我想您正在尝试为每个JS exclude jquery设置延迟。min和jquery。用户界面。果心最小值。

基于此,我对您的代码进行了一些更改,这将为所有JS排除给定示例文件jquery设置延迟。min和jquery。用户界面。果心最小值。

function add_defer_to_cf7( $url )
{
    //If  not js file OR js file with \'jquery.ui.core.min\' OR \'jquery.min\' name string, then no need to apply defer
    if(FALSE === strpos( $url, \'.js\') || ((strpos( $url, \'jquery.ui.core.min\') > 0) || (strpos($url, \'jquery.min\') > 0))){ 
        return $url;
    }
    else{
        //set defer for .js files
        return "$url\' defer=\'defer";        
    }
}
add_filter( \'clean_url\', \'add_defer_to_cf7\', 11, 1 );
以上代码为除jquery之外的所有JS设置了defer=\'defer\'。用户界面。果心“min”和“jquery”。这就是你想要的。祝你好运

谢谢

SO网友:Gixty

我正在使用此代码,希望它对您有所帮助。

function defer_parsing_of_js ( $url ) {
    if ( FALSE === strpos( $url, \'.js\' ) ) return $url;
    if ( strpos( $url, \'jquery.min.js\' ) ) return $url;
    return "$url\' defer=\'defer";
  }
add_filter( \'clean_url\', \'defer_parsing_of_js\', 11, 1 );

结束