Вот мое решение.Я чувствую, что это довольно грубо, но я думаю, что это работает.
// attach omniture tracking to links within search results
jQuery('.app1 .app1-searchresults').on('click', '.app1-entry a', function(event) {
var jLink = jQuery(event.target);
s_gi(s_account).tl(true, 'o', 'App1: {instance}: {link}'.supplant({
'instance': jQuery('.app1 .app1-header').text(),
'link': jLink.text()
}));
setTimeout(function() { window.location = jLink.attr('href'); }, 500);
event.preventDefault();
return false;
});
Важная часть - это не части jQuery - возможно, у вас есть какой-то метод определения ссылок, которые вы хотите отслеживать,и для реализации делегированного обработчика событий, а точнее - последних 3 операторов.
Эта статья Adobe Бена Гейнса указывает(в разделе «Использование отслеживания ссылок на чем-то отличном от ссылки») s.tl () вводит задержку в 500 мс перед навигацией.Это необходимо для того, чтобы асинхронный вызов отслеживания успел выполнить перед выгрузкой страницы.Я видел, как Chrome «отменял» HTTP-вызовы, которые ~ одновременны с операциями навигации;Fiddler даже стирает трафик из своего списка запросов.У меня нет опыта работы с WireShark, поэтому я решил ошибиться с осторожностью и ввести ту же задержку.
event.preventDefault()
return false
Это мешает браузеру нормально реагировать и сразу уходить, когда пользователь щелкает ссылку.
Кажется, что грубость здесь - это setTimeout.Мне немного неудобно использовать таймер вместо чего-то, управляемого событиями, которое требует столько или меньше времени, чтобы убедиться, что вызов отслеживания сделан.Однако без официальной поддержки со стороны Omniture, допускающей явное продолжение или настраиваемое отслеживаемое событие, это может быть самым безопасным.
Надеюсь, это поможет.