Вы не возвращаете false
из вашего обработчика onclick
.Вы возвращаете false
из функции, которую она вызывает, но затем отбрасываете это в обработчике.Вы имели в виду:
onclick="return trackExternalLink(this, '/links-the_royal_society_of_wildlife_trusts');"
Однако все эти вещи onclick
довольно уродливы.Рассмотрим ненавязчивый сценарий.И потерять неприятный вызов setTimeout
создания сценария из строки.Google действительно рекомендует этот код?Это своего рода отстой.
Вот версия быстрого взлома, которая оборачивает действие в имя класса:
<a href="http://www.wildlifetrusts.org/" class="ping-links-the_royal_society_of_wildlife_trusts">Royal Society of Wildlife Trusts.</a>
<script type="text/javascript">
for (var i= document.links.length; i-->0;)
if (document.links[i].className.substring(0, 5)==='ping-')
document.links[i].onclick= pingclick;
function pingclick() {
var action= this.className.substring(5);
var href= this.href;
_gaq.push(['_trackPageview', action]);
setTimeout(function() {
location.href= href;
}, 25000);
return false;
}
</script>
Это все еще не здорово.25 секунд (25000
), очевидно, way слишком длинная задержка;Вы, вероятно, хотите снизить это до 200ish.На самом деле он должен следовать по ссылке, как только XMLHttpRequest, который передает информацию на сервер, будет завершен, а не использовать произвольную задержку, но Google, похоже, не дает вам такой возможности.Как бедно.С другой стороны, сценарии pingback для отслеживания ссылок в любом случае являются неприятным, враждебным для пользователя действием.