我是一名数字分析师,正在尝试学习 Javascript,尤其是我们的组织现在使用 Google 跟踪代码管理器。
今天早上,我的网站设置为跟踪某些出站链接(点击应用程序商店)作为事件。自定义 HTML 是:
<script type="text/javascript">
$(document).ready(function(){
$('.app-cta a').click(function(){
dataLayer.push({ 'event':'GAevent', 'eventCategory':'App', 'eventAction':'Click to App Store', 'eventLabel':'iOS' })
});
});
</script>
但是有一个问题(显然很常见),当用户单击退出链接时,浏览器会在 Javascript 有时间将参数传递给 Google Analytics 之前访问新网站。建议的解决方法是添加 500 毫秒的延迟:
<script type="text/javascript">
setTimeout(function(){
$(document).ready(function(){
$('.app-cta a').click(function(){
dataLayer.push({ 'event':'GAevent', 'eventCategory':'App', 'eventAction':'Click to App Store', 'eventLabel':'iOS' })
});
});
},500);
</script>
这很有效,让我感觉很棒,因为这是我第二次或第三次使用 Javascript。
然后我想更大胆一点。我想让代码“更整洁”,并尝试从分析函数中创建一个变量,然后针对该变量运行 setTimeout 方法。这是我尝试过的:
<script type="text/javascript">
setTimeout(function(){track_app},500);
var track_app = $(document).ready(function(){
$('.app-cta a').click(function(){
dataLayer.push({ 'event':'GAevent', 'eventCategory':'App', 'eventAction':'Click to App Store', 'eventLabel':'iOS' })
});
});
</script>
我意识到这看起来一定非常基本,但如果有人能指出为什么最后一次尝试不起作用,我将不胜感激?我最初的尝试(这是有效的并且我可以轻松恢复)是否是向分析功能添加 500 毫秒延迟的“最巧妙”方法?集成 setTimout 方法的最佳方式是什么?
最佳答案
你几乎做到了; track_app
必须是一个完整的函数,而不仅仅是函数体
var track_app = function () {
$(document).ready(function () {
$('.app-cta a').click(function () {
dataLayer.push({'event': 'GAevent', 'eventCategory': 'App', 'eventAction': 'Click to App Store', 'eventLabel': 'iOS'});
});
});
};
setTimeout(track_app, 500);
关于Javascript 函数作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18175688/