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>
cf。: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的head节点,然后,而不是包含i.js
,只需在我为KISSMetrics跟踪的点击事件注册听众之前运行函数window.KM.ikmq()
。
如果有的话会有什么缺点?
完全可选的红利问题:如果在脚本的其余部分中未使用变量var _kmq = _kmq || [];
,则_kmq
上方代码段中第一行代码的目的是什么?
°十六进制字符串是用于演示目的的假密钥