【发布时间】:2016-10-03 00:40:48
【问题描述】:
我正在开发一个网站并研究其 Page Speed Insights 并拥有一个
Eliminate render-blocking JavaScript and CSS in above-the-fold content
所以基本上发生的事情是我在页面顶部有两个外部 javascript 导入:
<script src="/remotestaff_2015/js/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="/remotestaff_2015/js/bootstrap.min.js" type="text/javascript"></script>
该网站有很多 javascript,但有些位于页面底部 <body> 标记之后。所以我的问题是上面的那两个。要修复渲染块,我已经在 google 上搜索过,发现我可以使用 defer 或 async 属性。我的问题是网站上有一些具有内联javascript的模块,例如:
<script type="text/javascript">
$("#menu-toggle").click(function(e) {
e.preventDefault();
$("#wrapper").toggleClass("toggled");
if ($("#wrapper").hasClass("toggled")) {
$(".color-fade").css("opacity", ".5");
} else {
$(".color-fade").css("opacity", "1");
}
});
因此,如果我在 jquery 文件上添加延迟,我的内联 javascript 会出现错误,因为它会在尚未加载 jquery 的情况下加载。有没有办法修复这个内联脚本或以某种方式让它们在延迟的 jquery 或其他 js 文件被加载后运行?我不想将那些内联脚本放在其他文件中。
【问题讨论】:
标签: javascript jquery asynchronous optimization lazy-loading