我在我的网页上使用jquery malihu自定义滚动条。然后我嵌入了截取的谷歌分析代码。有时(可能10次中有4次) Analytics.js需要40秒才能加载。滚动条脚本是必不可少的,没有它网站看起来很丑陋,但这个滚动条脚本是在加载页面后执行的。但是页面在40秒后才会加载(因为analytics.js的原因),所以40秒看起来很糟糕。analytics.js不是异步加载的吗?那么,为什么它会阻止页面正确加载呢?
它看起来是这样的:
<!DOCTYPE html>
<html lang="de">
<head>
<!-- Some meta tags, links, scripts -->
<link rel="stylesheet" href="css/jquery.mCustomScrollbar.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="js/jquery.mCustomScrollbar.concat.min.js"></script>
</head>
<body onload="onLoad();" >
<!-- Some code -->
<script>
(function($){
$(window).load(function(){
$("body").mCustomScrollbar({
theme:"minimal-dark"
});
});
})(jQuery);
</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-X4XXX297-X', 'auto');
ga('send', 'pageview');
</script>
</body>
</html>发布于 2015-11-20 15:38:07
根据此链接Analytics for Web (analytics.js),谷歌分析将不会阻止其他脚本加载。
尝试将脚本更改为在document ready上运行:
(function($) {
$(window).ready(function() {
$("body").mCustomScrollbar({
theme: "minimal-dark"
});
});
})(jQuery);发布于 2015-11-20 16:22:21
异步脚本,包括谷歌analytics.js脚本,不会阻止其他脚本的加载或呈现。
导致mCustomScrollbar延迟执行的原因是它在onload事件中执行。Onload仅在下载完所有资源后才会触发。这包括所有脚本、图像、css等。
所以你有两个选择。或者不要等待onloadevent,而是使用DOMContentLoaded。因为您已经在使用jquery,所以可以使用$(window).ready。我不知道jquery malihu自定义滚动条,所以你需要确保它不依赖于页面的完全加载。
或者,您需要调查是什么阻碍了onload事件。因此,在浏览器的developertools网络选项卡中打开网页,或者在webpagetest中打开您的网站,尝试找出是什么降低了onload事件的速度。
https://stackoverflow.com/questions/33821069
复制相似问题