我想在我的 Rails 4 + Turbolinks 应用程序中集成 hubspot 聊天界面。我已将 Google 标签管理器配置为在每个工作正常的页面加载事件中显示支持聊天界面。
GTM 标记(自定义 html)
<!-- Start of HubSpot Embed Code -->
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/xxxxxx.js"></script>
<!-- End of HubSpot Embed Code -->
问题
为了调试,我遵循了
how-do-i-know-if-my-hubspot-tracking-code-is-working
通过检查元素或将其 checkin 浏览器的 View 页面源,我可以看到此标记已添加到文档正文 (DOM) 中。网络选项卡还显示对
js.hs-script.com
进行的网络调用.预期
最佳答案
我也遇到了这个问题,并通过在(重新)包括 Hubspot 脚本加载器之前从标题中删除任何现有的 Hubspot 脚本来解决它。我只是在添加 Hubspot 加载器之前直接在我的 View 中添加了以下脚本:
<script>
// Remove Hubspot <head> scripts after a Turbolinks page load
// so it can re-initialize properly. Paste this code immediately
// before the hubspot loading script in the <body>
(function() {
var scripts, script;
// Remove scripts added by hs-scriptloader
scripts = document.querySelectorAll('script[data-loader="hs-scriptloader"]');
for (var script of scripts) {
script.remove();
}
// Remove Hubspot Analytics
script = document.getElementById('hs-analytics');
if (script != undefined) {
script.remove();
}
// Avoid duplicate chat warning and allow chat to load
window.hubspot_live_messages_running = undefined
})()
</script>
<!-- Now add the script to load Hubspot-->
<script async="" defer="defer" id="hs-script-loader" src="//js.hs-scripts.com/xxxxxxx.js" type="text/javascript"></script>
这仍然是一个脆弱的解决方案,因为 Hubspot 可以随时更改选择器(数据加载器等)。
关于ruby-on-rails - Turbolinks 访问页面中缺少 hubspot 聊天界面,但可以刷新整页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51203380/