首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从不调用zopim回调

从不调用zopim回调
EN

Stack Overflow用户
提问于 2018-09-04 19:31:47
回答 1查看 410关注 0票数 0

按照this documentation的指令,我得到了以下代码:

代码语言:javascript
复制
window.zEmbed || (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");
          $.onload = (event) => {
              console.log("chat script has loaded");
          };
          $.src = "//v2.zopim.com/?@zopimClientID"; z.t = +new Date; $.
              type = "text/javascript"; e.parentNode.insertBefore($, e);   
      })(document, "script");

      var onChatStart = function () {
          $zopim.livechat.window.show();
          window['onChatStart'] && window['onChatStart']();
      };

      $zopim(function () {
          $zopim.livechat.clearAll();
          (......)
      });

问题是$zopim(funtion() {..})回调函数从未调用过,但脚本已成功加载。我知道,基于由以下人员制作的console.log:

代码语言:javascript
复制
$.onload = (event) => {
     console.log("chat script has loaded");
};

有人知道为什么会这样吗?谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-05-22 19:40:39

问题是,在$zopim脚本完全加载之前,您正在运行它。一旦加载了$zopim对象的所有部分,它将停止循环并运行您的脚本。

代码语言:javascript
复制
var zopimConfig = function() {
    $zopim(function() {
        $zopim.livechat.clearAll();
        (......)
    });
};

var waitForZopim = setInterval(function () {
    if (
        window.$zopim === undefined ||
        window.$zopim.livechat === undefined ||
        window.$zopim.livechat.departments === undefined
    ) {
        return;
    }
    zopimConfig();
    clearInterval(waitForZopim);
}, 100);

等待window.$zopim.livechat.departments是可选的,但是,如果您在部门周围做任何事情,我建议您保留以下内容

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52165341

复制
相关文章

相似问题

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