【问题标题】:Defer parsing of JavaScript: Unable to resolve延迟解析 JavaScript:无法解析
【发布时间】:2017-04-12 14:36:25
【问题描述】:

我们正在尝试解决 GTmetrix 上报告的以下输出:尝试延迟 javascript 的解析以减少页面加载时间。

但是,无法成功提高“延迟解析 Javascript”参数的等级。

我们已经尝试了以下步骤:

  1. 在我们网站的 /wp-content/themes/"theme"(porto) 中的 functions.php 中添加了以下代码行;这没有帮助。

    // Custom Scripting to Move JavaScript from the Head to the Footer
function remove_head_scripts() { 
remove_action('wp_head', 'wp_print_scripts'); 
remove_action('wp_head', 'wp_print_head_scripts', 9); 
remove_action('wp_head', 'wp_enqueue_scripts', 1);

add_action('wp_footer', 'wp_print_scripts', 5);
add_action('wp_footer', 'wp_enqueue_scripts', 5);
add_action('wp_footer', 'wp_print_head_scripts', 5); 
} 
add_action( 'wp_enqueue_scripts', 'remove_head_scripts' );

// END Custom Scripting to Move JavaScript
  1. 将以下代码行添加到functions.php,但没有帮助。

    // Defer Javascripts

// Defer jQuery Parsing using the HTML5 defer property

if (!(is_admin() )) {
function defer_parsing_of_js ( $url ) {
    if ( FALSE === strpos( $url, '.js' ) ) return $url;
    if ( strpos( $url, 'jquery.js' ) ) return $url;
    // return "$url' defer ";
    return "$url' defer onload='";
}
add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );
}
  1. 尝试在 header.php 和 footer.php 的 javascripts 中手动添加 'defer="defer"' 属性,但没有改变。

  2. 安装了“Autooptimize”和“WP Deferred Javascripts”插件,但这会影响网站的工作(悬停时不显示下拉菜单)。

如果有办法解决这个问题,或者我们是否遗漏了什么,请告诉我们。请帮忙。

【问题讨论】:

  • 在脚本标签上尝试异步属性
  • 如果我理解正确,那么您的要求是在 DOM 渲染结束时执行 javascripts。根据您的代码,您期望 WP 在页脚中打印脚本,您的脚本是否在页脚处打印,您可以通过使用 (Ctrl + u) 查看页面源来检查
  • 在顶部看起来几乎相同的js被加载了3次,为什么? 984.5K 翻了三倍?请解释一下,然后再写几行类似的东西。
  • @PrashanthReddy:我不确定“异步”的用法,我的意思是在这里应用它的过程。
  • @AbhisekMalakar:是的,脚本确实位于页脚;但成绩并没有提高

标签: javascript wordpress


【解决方案1】:

我可以通过将以下代码行添加到 /wp-includes/functions.php 来解决此问题

/* Function for defer parsing of javascripts, for loading the website 
faster */

function defer_parsing_of_js ( $url ) 
{
   if ( FALSE === strpos( $url, '.js' ) ) 
   return $url;
   if ( strpos( $url, 'jquery.js' ) ) 
   return $url;
   if ( strpos( $url, 'wp-custom-countdown' ) )
   return $url;
   return "$url' defer ";
}

add_filter( 'clean_url', 'defer_parsing_of_js', 11, 1 );

【讨论】:

  • 之前我在 /wp-content/functions.php 中添加了一些东西,但它不起作用。
猜你喜欢
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多