首页 > 代码库 > 用延迟加载解决CNZZ加载慢的问题

用延迟加载解决CNZZ加载慢的问题

我是不太喜欢CNZZ的, 不过既然公司要用, 还是得加, 这个公司不知道为什么不好好优化一下, 这么多功能都做了, 难道不愿意多费几分钟优化一下这个特别影响用户体验的统计代码? 现在的移动站页面, 是有载入提示浮层的, 要在页面加载完毕后, 才会将浮层撤销, 结果CNZZ动不动加载超时, 导致浮层经常盖在那里好几分钟不动弹.

原来的代码是

<script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id=‘cnzz_stat_icon_125974259‘%3E%3C/span%3E%3Cscript src=http://www.mamicode.com/‘" + cnzz_protocol + "s11.cnzz.com/z_stat.php%3Fid%3D125974259‘ type=‘text/javascript‘%3E%3C/script%3E"));</script>

或者是

<script src="https://s11.cnzz.com/z_stat.php?id=125974259&web_id=125974259" language="JavaScript"></script>

前者会在载入中写入一个span, 然后在下面加载一串js, 在span里写一些内容, 这个也是很让人讨厌的一个地方, 因为它会在页面上显示出来, 非得自己做写改动才能把它隐藏掉. 后者会载入一串js.

好了, 修改的结果是这样的, 放到页面最下方</body>标签前面

  <script>    $(function () {      // 延迟CNZZ统计, 以免影响页面载入      var cz = document.createElement("script");      cz.src = "//s11.cnzz.com/z_stat.php?id=125974259&web_id=125974259";      document.getElementsByTagName(‘body‘)[0].appendChild(cz);    });  </script>

这样会在页面加载完毕后再执行, 不影响页面其他元素正常显示.

用延迟加载解决CNZZ加载慢的问题