更改 object 属性,然后使用 javascript 在自定义函数中调用函数
Changing an object properties then calling a function inside a custom function with javascript
标题可能有点乱。基本上我想做的是创建一个自定义函数,它将修改 object 属性,然后 return 那个 object,然后调用一个函数。
关于我正在做的事情的一些背景知识:尽我最大的努力使用 Zendesk API 在我的网页上使用网络小部件。基本上这个网络小部件在启动时被配置为一个帮助中心,然后根据状态显示一个用于实时聊天或电子邮件的按钮。这里主要的 属性 被称为 'suppress',它禁用了一个小部件页面(聊天、电子邮件和帮助中心)。我的目标是使自定义函数 'suppress' 成为 3 个小部件页面中的 2 个,因此它只显示一个。然后一个名为 zE.activate()
的 API 函数将打开小部件。
我知道这是很多文字,让我向您展示我目前获得的代码:
<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)
似乎不起作用。
我还尝试了以下方法:
- 不是 return
window
或 window.zESettings
- 通过将
zE.activate()
放在 zESettings
的末尾或 return window
或 window.zESettings
[=45 之后,将所有内容放在一个函数下=]
如果您需要查看运行中的小部件以获得想法,可以查看它 right here。单击右下角的绿色按钮,输入任何内容,您会看到弹出联系表单按钮。当实时聊天代理可用时,此按钮会更改为聊天按钮。
现在我知道这是我通常应该直接使用 Zendesk 解决的问题,我尝试过,但他们告诉我没有什么可以完成我想要完成的事情,但我真的觉得这有与我在 javascript 中做事的方式有关,而不是 API 的构建方式..
有人有想法吗?非常感谢。
P.S。这是我的第二个post,所以我提前为我在这个问题中可能犯的错误道歉。
遗憾的是,事实证明您想要完成的事情是不可能的。由于 zE.settings 在小部件首次初始化时应用,因此如果不执行刷新页面和重新初始化小部件等操作,则无法动态更改小部件设置。据我从您的代码中可以看出,我认为您不想每次都刷新页面并重新初始化小部件只是为了应用上面列出的那些设置。
标题可能有点乱。基本上我想做的是创建一个自定义函数,它将修改 object 属性,然后 return 那个 object,然后调用一个函数。
关于我正在做的事情的一些背景知识:尽我最大的努力使用 Zendesk API 在我的网页上使用网络小部件。基本上这个网络小部件在启动时被配置为一个帮助中心,然后根据状态显示一个用于实时聊天或电子邮件的按钮。这里主要的 属性 被称为 'suppress',它禁用了一个小部件页面(聊天、电子邮件和帮助中心)。我的目标是使自定义函数 'suppress' 成为 3 个小部件页面中的 2 个,因此它只显示一个。然后一个名为 zE.activate()
的 API 函数将打开小部件。
我知道这是很多文字,让我向您展示我目前获得的代码:
<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)
似乎不起作用。
我还尝试了以下方法:
- 不是 return
window
或window.zESettings
- 通过将
zE.activate()
放在zESettings
的末尾或 returnwindow
或window.zESettings
[=45 之后,将所有内容放在一个函数下=]
如果您需要查看运行中的小部件以获得想法,可以查看它 right here。单击右下角的绿色按钮,输入任何内容,您会看到弹出联系表单按钮。当实时聊天代理可用时,此按钮会更改为聊天按钮。
现在我知道这是我通常应该直接使用 Zendesk 解决的问题,我尝试过,但他们告诉我没有什么可以完成我想要完成的事情,但我真的觉得这有与我在 javascript 中做事的方式有关,而不是 API 的构建方式..
有人有想法吗?非常感谢。
P.S。这是我的第二个post,所以我提前为我在这个问题中可能犯的错误道歉。
遗憾的是,事实证明您想要完成的事情是不可能的。由于 zE.settings 在小部件首次初始化时应用,因此如果不执行刷新页面和重新初始化小部件等操作,则无法动态更改小部件设置。据我从您的代码中可以看出,我认为您不想每次都刷新页面并重新初始化小部件只是为了应用上面列出的那些设置。