WordPress延迟加载JavaScript,来加速页面渲染方法。
什么是JavaScript的Defer属性?
每个人都可能遇到过这种情况:
head中有N个脚本,在加载脚本时,会阻塞页面渲染,这通常是空白的。
当然,我们可以将源代码中的脚本放入页脚来解决这个问题。
但是,一些复杂的开发环境,会让这个简单的工作变成特别复杂。
此时我们可以使用Defer属性,这是JavaScript中相对少见的属性。
你可能永远不会使用它,但我相信在阅读这篇介绍后,我相信你不会离开它。
它的主要功能是让脚本在加载整个页面后再解析,而不是在加载时解析它,这为仅包含事件触发的JavaScript的脚本提供了完整的页面加载速度。
是的,如果Script脚本标记具有延迟defer属性,即使它被放置在head中,它也会在解析HTML页面后执行,这类似于将Script脚本放在页面底部。
当然,延迟的使用也是有限的,通常要注意2点:
1)不要在延迟defer类型脚本块中,调用 document.write 命令;
2)不要在Defer脚本中,包括任何立即执行脚本,将使用全局变量或函数。
将Defer属性添加到WordPress中使用的脚本
在WordPress中,我们如何自动将Defer属性添加到WordPress使用的脚本?
我们可以将以下代码添加到当前主题的functions.php文件中 ▼
add_filter( 'clean_url', 'wpcwl_defer_script',11,1); function wpcwl_defer_script( $url ){ if(strpos($url, '.js') === false){ return $url; } return "$url' defer='defer"; };
注意事项
实时预览管理可能会显示空白:
若使用以上代码,打开实时预览管理(外观 → 自定义)时,可能会显示空白,所以请酌情使用。
在需要实时预览管理时,将以上代码注释掉,自定义完成后才删除注释代码。
PHP注释代码示例:
/* 这里是代码 */