我想在我的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
进行的网络调用。EXPECTED
最佳答案
我也遇到了这个问题,并通过在(重新)包括Hubspot脚本加载器之前从 header 中删除了任何现有的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/