如何在单页应用程序(SPA)的特定页面中隐藏对讲聊天小部件?
How to hide the Intercom chat widget in specific pages in a single page application (SPA)?
考虑用 vanilla JS 编写的单页应用程序(以避免框架特定的答案)。
我有一个默认加载 Intercom 的应用程序,但我想在特定页面中隐藏小部件。
这应该可以从 Intercom 本身实现,如他们的帮助中心 this article 所示,但它在单页应用程序中实际上不起作用 - 无论 Intercom 中配置了什么,该小部件都会显示。
一种选择是在页面上找到小部件并为给定页面手动隐藏它,但这感觉、听起来和味道都像黑客(它需要在返回到小部件所在的页面时重新启用小部件应该会出现)。
那么,对于 SPA 有什么好的做法吗?
如果您想以编程方式隐藏对讲启动器,可以使用 update
命令。
隐藏:
Intercom('update', {
"hide_default_launcher": true
});
并再次显示它(当您的下一页加载时,或触发应显示它的事件时)。
Intercom('update', {
"hide_default_launcher": false
});
我在 angular SPA 中使用了这种确切的技术,将其隐藏在遮挡某些按钮的屏幕上。
Intercom('update', {
"hide_default_launcher": true
});
$(".helpSupport").once().on("click", function() {
Intercom('update', {
"hide_default_launcher": false
});
Intercom('showMessages');
});
当我调用我的组件时,我调用了这段代码。
window.Intercom('update', {
hide_default_launcher: false,
});
示例:
const MyComponent = () => {
window.Intercom('update', {
hide_default_launcher: false,
});
return (
<div>...</div>);
};
缺点是你必须将hide_default_launcher设置为true 当您希望小部件下次出现时。
加载用户数据时输入此代码,并将小部件可见性设置为默认值
// Intercom logged in user variables loader
(<any>window).Intercom("boot", {
app_id: "abc",
name: user.username,
email: user.email,
created_at: moment(user.addedDate).unix()
});
// Hide messenger widget after loading user variables
// Will show it manually in specific pages
if ((<any>window).Intercom) (<any>window).Intercom("update", {
"hide_default_launcher": true
});
将此代码添加到您的守卫或导航器中 show/hide 根据您的默认设置在所有页面中添加此代码
// Hide messenger widget for all pages by default
// Will show it manually in specific pages
if ((<any>window).Intercom) (<any>window).Intercom("update", {
"hide_default_launcher": true
});
然后show/hide它在特定页面
ngOnInit()
{
// Show messenger widget for current page
// This code will override the default one in auth-guard/navigator
if ((<any>window).Intercom) (<any>window).Intercom("update", {
"hide_default_launcher": false
});
}
如果需要查看所有 boot/update 属性,请使用此 link
https://developers.intercom.com/installing-intercom/docs/javascript-api-attributes-objects
您可以根据当前页面 url 在您的对讲设置中 include/exclude 页面,这适用于我们的 SPA。说明位于问题中链接到的 article 中,位于“向 select 网站访问者显示 Messenger 启动器”下。
- 转到 Messenger 设置 > 控制您的入站对话音量
- Select 'visitors who match certain data'
- Select 'add data' 并添加属性 'current page URL' 以定义您 do/don 不想显示对讲启动器的页面
考虑用 vanilla JS 编写的单页应用程序(以避免框架特定的答案)。
我有一个默认加载 Intercom 的应用程序,但我想在特定页面中隐藏小部件。
这应该可以从 Intercom 本身实现,如他们的帮助中心 this article 所示,但它在单页应用程序中实际上不起作用 - 无论 Intercom 中配置了什么,该小部件都会显示。
一种选择是在页面上找到小部件并为给定页面手动隐藏它,但这感觉、听起来和味道都像黑客(它需要在返回到小部件所在的页面时重新启用小部件应该会出现)。
那么,对于 SPA 有什么好的做法吗?
如果您想以编程方式隐藏对讲启动器,可以使用 update
命令。
隐藏:
Intercom('update', {
"hide_default_launcher": true
});
并再次显示它(当您的下一页加载时,或触发应显示它的事件时)。
Intercom('update', {
"hide_default_launcher": false
});
我在 angular SPA 中使用了这种确切的技术,将其隐藏在遮挡某些按钮的屏幕上。
Intercom('update', {
"hide_default_launcher": true
});
$(".helpSupport").once().on("click", function() {
Intercom('update', {
"hide_default_launcher": false
});
Intercom('showMessages');
});
当我调用我的组件时,我调用了这段代码。
window.Intercom('update', {
hide_default_launcher: false,
});
示例:
const MyComponent = () => {
window.Intercom('update', {
hide_default_launcher: false,
});
return (
<div>...</div>);
};
缺点是你必须将hide_default_launcher设置为true 当您希望小部件下次出现时。
加载用户数据时输入此代码,并将小部件可见性设置为默认值
// Intercom logged in user variables loader
(<any>window).Intercom("boot", {
app_id: "abc",
name: user.username,
email: user.email,
created_at: moment(user.addedDate).unix()
});
// Hide messenger widget after loading user variables
// Will show it manually in specific pages
if ((<any>window).Intercom) (<any>window).Intercom("update", {
"hide_default_launcher": true
});
将此代码添加到您的守卫或导航器中 show/hide 根据您的默认设置在所有页面中添加此代码
// Hide messenger widget for all pages by default
// Will show it manually in specific pages
if ((<any>window).Intercom) (<any>window).Intercom("update", {
"hide_default_launcher": true
});
然后show/hide它在特定页面
ngOnInit()
{
// Show messenger widget for current page
// This code will override the default one in auth-guard/navigator
if ((<any>window).Intercom) (<any>window).Intercom("update", {
"hide_default_launcher": false
});
}
如果需要查看所有 boot/update 属性,请使用此 link https://developers.intercom.com/installing-intercom/docs/javascript-api-attributes-objects
您可以根据当前页面 url 在您的对讲设置中 include/exclude 页面,这适用于我们的 SPA。说明位于问题中链接到的 article 中,位于“向 select 网站访问者显示 Messenger 启动器”下。
- 转到 Messenger 设置 > 控制您的入站对话音量
- Select 'visitors who match certain data'
- Select 'add data' 并添加属性 'current page URL' 以定义您 do/don 不想显示对讲启动器的页面