所以Heap Analytics告诉我粘贴此代码以使用他们的产品 -
<script type="text/javascript">
window.heap=window.heap||[];heap.load=function(a){window._heapid=a;var b=document.createElement("script");b.type="text/javascript",b.async=!0,b.src=("https:"===document.location.protocol?"https:":"http:")+"//cdn.heapanalytics.com/js/heap.js";var c=document.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c);var d=function(a){return function(){heap.push([a].concat(Array.prototype.slice.call(arguments,0)))}},e=["identify","track"];for(var f=0;f<e.length;f++)heap[e[f]]=d(e[f])};
heap.load("YOUR_APP_ID");
</script>
这段代码有什么作用? (除非所有的app id)。
我在开源analytics.js
中发现了类似的东西<script type="text/javascript">
window.analytics||(window.analytics=[]),window.analytics.methods=["identify","track","trackLink","trackForm","trackClick","trackSubmit","page","pageview","ab","alias","ready","group","on","once","off"],window.analytics.factory=function(t){return function(){var a=Array.prototype.slice.call(arguments);return a.unshift(t),window.analytics.push(a),window.analytics}};for(var i=0;i<window.analytics.methods.length;i++){var method=window.analytics.methods[i];window.analytics[method]=window.analytics.factory(method)}window.analytics.load=function(t){var a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=("https:"===document.location.protocol?"https://":"http://")+"d2dq2ahtl5zl1z.cloudfront.net/analytics.js/v1/"+t+"/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n)},window.analytics.SNIPPET_VERSION="2.0.8",
window.analytics.load("YOUR_WRITE_KEY");
window.analytics.page();
</script>
这是做类似的吗? (一眼就看起来像)
答案 0 :(得分:6)
@Ennui大概是对的。让我们一块一块地阅读剧本:
window.heap = window.heap || [];
heap.load = function (a) {
window._heapid = a;
var b = document.createElement("script");
b.type = "text/javascript", b.async = !0, b.src = ("https:" === document.location.protocol ? "https:" : "http:") + "//cdn.heapanalytics.com/js/heap.js";
var c = document.getElementsByTagName("script")[0];
c.parentNode.insertBefore(b, c);
var d = function (a) {
return function () {
heap.push([a].concat(Array.prototype.slice.call(arguments, 0)))
}
}, e = ["identify", "track"];
for (var f = 0; f < e.length; f++) heap[e[f]] = d(e[f])
};
heap.load("YOUR_APP_ID");
脚本所做的第一件事就是定义一个全局heap
对象。
脚本执行的第二件事是定义heap.load
方法。 heap.load
首先将您的应用ID设置为全局变量,以便以后保存。
接下来,它创建一个新的脚本元素来加载heap.js跟踪脚本。 heap.js负责将用户事件记录到Heap。
加载heap.js后,heap.load
为其他两种方法定义存根:heap.identify
和heap.track
。这使您即使未加载heap.js也可以调用这些方法。 (您可以阅读更多关于他们在Heap's docs page.)
脚本执行的第三件事是使用您的应用ID来调用heap.load
,这就是我刚才谈到的所有内容。 :)
答案 1 :(得分:1)
它正在向页面打印内联Javascript调用,该页面引用,加载并初始化其中的异地分析跟踪脚本,其中包含特定于您网站的参数(如跟踪选项和ID)。