我需要将HotJar代码添加到我的应用中。我是这样做的:
视图/服务/ _hotjar.html.erb
<script>
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:140457,hjsv:5};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'//static.hotjar.com/c/hotjar-','.js?sv=');
</script>
视图/布局/ application.html.erb
<head>
.
.
<%= render partial: "services/google_analytics" %>
<%= render partial: "services/hotjar" %>
</head>
这样HotJar只能在第一个打开的页面上工作(我不确定它,但是它不能正常工作)。您可能会看到我使用Google Analytic所做的相同的事情,但它运作良好,因为这是一个区别,它在每个页面上呈现此代码:
视图/布局/ application.html.erb
<body>
.
.
<script>
ga('send', 'pageview', '<%= request.path %>');
</script>
</body>
我敢肯定,这不是正确的方法。但是怎么做呢?
答案 0 :(得分:1)
Turbolinks使您的应用成为ajax单页。仅重新加载body
,所有脚本和head
保持不变。有关重新执行的代码的例外和选项,但无论如何,您不希望在每个页面导航上添加另一个script
和hotjar代码。
Hotjar尚不支持此类应用(they say so here),因此要使其正常工作,您需要停用turbolink。
答案 1 :(得分:1)
对于turbolinks支持,可以在您的hotjar代码Hotjar on Single Page Apps
之后添加此代码段<script>
document.addEventListener("turbolinks:load", function(event) {
hj('stateChange', '<%=request.referer%>');
});
</script>