我使用jQuery通过以下代码跟踪GA事件,基本上它允许程序员通过基本"块"来构建GA自定义GA事件。 (比如职位等。)
function trackingGaEvent(page, position, object, type, genContent, list) {
var genContent = genContent || 'Click',
eventAction = genContent,
eventLabel = type + " - " + position + " " + object;
if (list) {
eventAction = type;
eventLabel = genContent + " - " + position + " " + object;
}
console.log(page, eventAction, eventLabel);
}
$(document).ready(function(){
$(document).on('click', '.gaTracking', function() {
trackingGaEvent($(this).data('page'),
$(this).data('position'),
$(this).data('object'),
$(this).data('type'),
$(this).data('gencontent'),
$(this).data('list'));
});
});
然而,我的问题是它总是两次启动代码。我已经尝试添加一个.unbind(),正如我在网站上看到的那样,但是当我这样做时,它会禁用我的数据切换="下拉" (我在网站上使用jQuery和Bootstrap),使网站无法正常运行。
我需要找到一种方法,使我的GA跟踪代码在点击时只触发一次,而不会干扰网站上的其他对象组合。
编辑:这是我正在跟踪的典型HTML对象:
<a href="#" class="btn btn-dark gaTracking" data-page="pgHomepage" data-position="Recent Videos" data-object="Button" data-type="More Videos" title="View videos list ordered by release date">+ More videos/a>
EDIT2:目前,我正在使用onclick =&#34; trackingGaEvent()&#34;直接在锚标记中,直到我找到一种方法来使jQuery方式工作。因此它可以直接在HTML中使用onClick。
答案 0 :(得分:1)
看到HTML真的很有帮助,但是没有看到它,我猜你的事件正在通过两个 .gaTracking
节点传播,导致jQuery看到两个触发适当类的节点。也许试一试:
$(document).ready(function(){
$('.gaTracking').on('click', function(evt) {
evt.stopPropagation();
trackingGaEvent(
$(this).data('page'),
$(this).data('position'),
$(this).data('object'),
$(this).data('type'),
$(this).data('gencontent'),
$(this).data('list'));
});
});
请注意,我们现在正在监听单个.gaTracking
节点,而不是文档。这意味着我们可以阻止事件传播到根,从而阻止它在父.gaTracking
节点上触发。
答案 1 :(得分:0)
您可以使用.one
来注册事件而不是.on
,因此处理程序只会被触发一次。