在我的网站上加载时,KISSMetrics 有时会导致问题。熟悉它的人可能会知道他们的文档中出现的以下代码段:
<!-- Kissmetrics tracking snippet -->
<script type="text/javascript">var _kmq = _kmq || [];
var _kmk = _kmk || '61d817358af517ab2975dbb768eeb1d6d0d07c4b';
function _kms(u){
setTimeout(function(){
var d = document, f = d.getElementsByTagName('script')[0],
s = d.createElement('script');
s.type = 'text/javascript'; s.async = true; s.src = u;
f.parentNode.insertBefore(s, f);
}, 1);
}
_kms('//i.kissmetrics.com/i.js');
_kms('//scripts.kissmetrics.com/' + _kmk + '.2.js');
</script>
参见:https ://app.kissmetrics.com/setup/integration/9ac2445636036f9151b84b444b1ae78d105d0f7a
这真的很花哨,我想知道为什么我不能比这更简单。
打开文件i.kissmetrics.com/i.js
我们看到单行:
if(typeof(_kmil) == 'function')_kmil();
这意味着“如果您将 _kmil 识别为函数,请运行 _kmil()。” 同时,是您看到的第二个脚本中定义的函数_kmil()
的别名。KM.ikmq()
scripts.kissmetrics.com/61d817358af517ab2975dbb768eeb1d6d0d07c4b.2.js
当第二个脚本° 无法加载或加载延迟时,似乎出现了问题。
我想改为执行以下操作:放入scripts.kissmetrics...
我的 html 的头节点,然后,而不是 include ,只需在我为 KISSMetrics 跟踪的单击事件注册我的侦听器之前i.js
运行该函数。window.KM.ikmq()
如果有的话,这样做的缺点是什么?
var _kmq = _kmq || [];
完全可选的额外问题:如果该变量_kmq
未在脚本的其余部分中使用,那么上面代码片段中第一行代码的目的是什么?
° 十六进制字符串是此处用于演示目的的假密钥