0

标题可能有点乱。基本上我要做的是创建一个自定义函数,该函数将修改对象属性,然后返回该对象,然后调用一个函数。

关于我正在做的事情的一点背景:尽我所能使用 Zendesk API 在我的网页上使用 Web 小部件。基本上,这个 Web 小部件被配置为启动时的帮助中心,然后根据状态显示一个用于实时聊天或电子邮件的按钮。这里有问题的主要属性称为“抑制”,它禁用小部件页面之一(聊天、电子邮件和帮助中心)。我的目标是让自定义功能“抑制”3 个小部件页面中的 2 个,因此它只显示一个。然后调用的 API 函数zE.activate()将打开小部件。

我知道这是很多文字,让我向您展示我到目前为止的代码:

<script>
function setChatPopOutProps(window) {
    window.zESettings = {
        webWidget: {
            contactForm: {
                suppress: true
            },
            helpCenter: {
                suppress: true
            }
        }
    };
    return window.zESettings;
};
function chatPopOut() {
    setChatPopOutProps(window);
    zE.activate();
};
</script>

现在,当我单击已chatPopOut()分配的按钮时,zE.activate()它会打开小部件,但基本上setChatPopOutProps(window)似乎不起作用。

我还尝试了以下方法:

  • 不返回windowwindow.zESettings
  • zE.activate()通过将所有内容放在返回的末尾zESettings或之后,将所有内容放在一个函数下,window或者window.zESettings

如果您需要查看实际中的小部件以获得想法,您可以在此处查看。单击右下角的绿色按钮,输入任何内容,您会看到弹出联系表单按钮。当实时聊天代理可用时,此按钮会更改为聊天按钮。

现在我知道这是我通常应该直接使用 Zendesk 解决的问题,我尝试过,但他们告诉我没有什么可以做我想要完成的事情,但我真的觉得这与我在 javascript 中做事的方式,而不是 API 的构建方式..

有人有想法吗?我真的很感激。

PS这是我的第二篇文章,所以我提前为我在这个问题中可能犯的错误道歉。

4

1 回答 1

0

可悲的是,事实证明你想要完成的事情是不可能的。由于 zE.settings 在小部件首次初始化时被应用,因此如果不执行刷新页面和重新初始化小部件等操作,就无法动态更改小部件设置。据我从您的代码中可以看出,我认为您不想每次都刷新页面,并重新初始化小部件只是为了应用您上面列出的那些设置。

于 2016-11-04T17:12:42.110 回答