Отслеживание ссылок по клику не работает как гиперссылка - PullRequest
0 голосов
/ 21 марта 2012
<li><a href="konkurranseregler.html" onclick="javascript:kenshoo_conv('rules','0','','sem','NOK');return false;">KONKURRANSEREGLER</a></li>

<div class ="contactButton"> <a href="http://www.altavdrikke.no/#top" onclick="javascript:kenshoo_conv('kontakt','0','','sem','NOK');return false;"><span>Kontakta Oss</span></a></div> 

Эти две кнопки не работают как ссылки, см .: http://www.undergroundblc.co.uk/chaqwa/ т.е. вы нажимаете, но ничего не происходит. Если вы измените «return false» на «return true», кнопки снова будут работать, но больше не будут регистрироваться в компании по отслеживанию. Поэтому мой вопрос заключается в том, как сохранить «return false» и заставить их работать как ссылки.

1 Ответ

0 голосов
/ 21 марта 2012

Прежде всего.Если вы ДОЛЖНЫ включить javascript в ваш html (не рекомендуется), вам не нужно иметь объявление javascript: в событиях (onclick в вашем примере).Было бы намного лучше использовать методы dom el.addEventListener('click', kenshoo_conv, false).

Если вам нужно запустить функцию до выгрузки страницы, вам потребуется некоторый контроль над этой функцией, чтобы узнать, когда она успешно запустила отслеживание becon.

Как только вы подключите onclick, вы можете использовать аргумент события (который передается функции), чтобы остановить запуск события, evt.preventDefault(), сделать все, что вам нужно сделать, затем установить location.href, когда ваш трекер becon успешно сработал.

Весь ваш код может выглядеть примерно так (при условии, что все нормализовано, но не в IE):

HTML

<a href="konkurranseregler.html" data-args="rules,0,,sem,NOK"   
   class="kenshoo_conv_link">KONKURRANSEREGLER</a>

JAVSCRIPT

function kenshoo_conv(evt) {
    var dest = this.href,
        args = this.getAttribute('data-args').split(",");

    evt.preventDefault();

    //add success event to arguments
    args.push(function () {
       location.href = dest;
    });

    //fire the tracking function
    trackMe.apply(this, args);
}

var kenshoo_conv_links = document.getElementsByClassName("kenshoo_conv_link");
for (var i = 0, il = kenshoo_conv_links.length; i < il; i += 1) {
    kenshoo_conv_links[i].addEventListener('click', kenshoo_conv, false);
}

Это сделает последний аргумент в функции trackMe обратным вызовом, чтобы изменить местоположение на место назначения ссылки.Так что вам нужно будет запустить эту функцию, как только трекер будет успешно запущен.Если вы этого не знаете, вы можете сделать это после тайм-аута (не идеально)

...