尝试遵循 Google Page Insights 建议,我得到了“JS 渲染块”建议,它与jQuery
主文件有关。
我的网站使用带有一些插件的 WordPress。其中一个插件将其 JS 内联。因此,当我移动jQuery
到加载页脚时,或者当我使用“延迟”模式加载它时,我会jQuery is not defined
在触发内联代码时得到。
我试图找到一个全局解决方案来“捕获”所有内联脚本并jQuery
在文档末尾执行主文件后延迟它。
我写了一个非常适合我的解决方案。对于我的具体情况,这是非常直接的解决方案,但我未能将其作为过滤器the_content
或小部件输出。我想让它成为一个全局解决方案,所以我不需要担心任何 JS 在某个地方触发。
任何想法如何使它工作?到目前为止,这是我的代码,对于这种特定情况,它通过一个短代码运行:
/* Get shortcode HTML */
$widget_shortcode = do_shortcode($shortcode);
/* Take out all scripts into an array */
$delayed_scripts = array();
preg_match_all('#<script(.*?)</script>#is', $widget_shortcode, $match);
foreach ($match as $val){
$delayed_script = '<script '.$val[0].'</script>';
array_push($delayed_scripts, $delayed_script);
}
/* Remove all scripts from HTML */
$widget_shortcode = preg_replace('#<script(.*?)</script>#is', '', $widget_shortcode);
/* Echo filtered HTML */
echo $widget_shortcode;
就在结束</body>
标签之前:
foreach ($delayed_scripts as $script) {
echo $delayed_script;
}