首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何最好地推迟脚本以排除在PageSpeed Insight之外?

如何最好地推迟脚本以排除在PageSpeed Insight之外?
EN

Stack Overflow用户
提问于 2019-01-13 06:32:20
回答 4查看 2.1K关注 0票数 4

我们在网站上使用佐宾。不幸的是,由于这一点,我们在PageSpeed透视上受到了严重的惩罚。

  • 无Zopim: 86/100
  • 与Zopim: 66/100

Zopim似乎意识到了问题,并承诺进一步优化他们的小部件,但是我们还没有看到很大的进展。

添加Zopim的代码如下:

代码语言:javascript
运行
复制
<script type="text/javascript">
  window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
  d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
  _.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");
  $.src="https://v2.zopim.com/?2dAdkKRoqdi9hHHrfr302XabQaK8DN7f";z.t=+new Date;$.
  type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
</script>

我一直在尝试不同的方法来推迟脚本的执行(延迟和异步),但是没有成功地改进我们的PageSpeed Insight评分(没有完全删除Zopim )。

我来到了这个文章,但是我天真的尝试(将"defer.js“替换为"https://v2.zopim.com/?2dAdkKRoqdi9hHHrfr302XabQaK8DN7f")并没有达到预期的效果,而Zopim仍然被PageSpeed计算。

我的问题是:

  • 推迟非关键脚本以确保PageSpeed Insight不将脚本作为其分数的一部分的最佳方法是什么?
  • 如何将其应用于Zopim脚本?
EN

回答 4

Stack Overflow用户

发布于 2021-02-24 09:09:38

在本文中,编写最好的解决方案:这里

“我们改变了加载脚本的逻辑。脚本加载是在用户执行第一个操作时开始的。我们考虑的操作是:滚动、鼠标单击、鼠标移动、触摸屏幕或按键。”

干得好!

代码语言:javascript
运行
复制
<script>
            document.addEventListener('scroll', zopimlaunch);
            document.addEventListener('mousedown', zopimlaunch);
            document.addEventListener('mousemove', zopimlaunch);
            document.addEventListener('touchstart', zopimlaunch);
            document.addEventListener('scroll', zopimlaunch);
            document.addEventListener('keydown', zopimlaunch);

            function zopimlaunch () {
                window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set._.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute('charset','utf-8');
                $.src='//v2.zopim.com/?yourid';z.t=+new Date;$.type='text/javascript';e.parentNode.insertBefore($,e)})(document,'script');

                document.removeEventListener('scroll', zopimlaunch);
                document.removeEventListener('mousedown', zopimlaunch);
                document.removeEventListener('mousemove', zopimlaunch);
                document.removeEventListener('touchstart', zopimlaunch);
                document.removeEventListener('scroll', zopimlaunch);
                document.removeEventListener('keydown', zopimlaunch);
            }

</script>

票数 4
EN

Stack Overflow用户

发布于 2019-04-09 17:52:02

是的,zopim不在我的好书里,所以我也一直在试图修改他们的代码。这就是我如何推迟zopim脚本。

代码语言:javascript
运行
复制
<script type="text/javascript">  
  function do_zopim() {
    jQuery(document).on("mousemove.zopim_defer scroll.zopim_defer", function(e) {
      window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
      d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
      _.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");
      $.src="https://v2.zopim.com/?anonymous";z.t=+new Date;$.
      type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
      jQuery(document).off("mousemove.zopim_defer scroll.zopim_defer");
    });
  }
</script>

<body onload="do_zopim();">
票数 2
EN

Stack Overflow用户

发布于 2019-07-04 13:55:22

您可以在javascript的第三行末尾添加$.setAttribute("defer",null);,以便如下所示:

代码语言:javascript
运行
复制
<script type="text/javascript">
  window.$zopim||(function(d,s){var z=$zopim=function(c){z._.push(c)},$=z.s=
  d.createElement(s),e=d.getElementsByTagName(s)[0];z.set=function(o){z.set.
  _.push(o)};z._=[];z.set._=[];$.async=!0;$.setAttribute("charset","utf-8");$.setAttribute("defer",null);
  $.src="https://v2.zopim.com/?2dAdkKRoqdi9hHHrfr302XabQaK8DN7f";z.t=+new Date;$.
  type="text/javascript";e.parentNode.insertBefore($,e)})(document,"script");
</script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54166612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档