2015-02-26 5 views
1

У меня есть изображение, которое также является ссылкой на продукт на моей веб-странице электронной коммерции. Я хочу отслеживать с помощью расширенного инструмента электронной коммерции google analytics, когда кто-то нажимает на изображение. Чтобы получить более точные данные в моих отчетах по аналитике google, я останавливаю ссылку от перехода на следующую страницу до тех пор, пока событие не будет отправлено.ctrl + click disabled при использовании функции обратного вызова

Это HTML в ссылке:

<a href="/product_path" onclick="onProductClick();return !ga.loaded;"> 
    <img src="/some_product.jpg" /> 
</a> 

Это Javascript используется:

<script> 
    function onProductClick() { 

     ... 

     ga('send', 'event', 'UX', 'click', 'Featured' { 
      'hitCallback': function() { 
       document.location = '/product_path' 
      } 
     }); 
    } 
</script> 

Однако это вызывает то, что при нажатии Ctrl + клик на изображении она не открывайтесь на новой вкладке, как обычно, она открывается в том же самом, что я сейчас. И это функциональность, я бы хотел, чтобы она продолжала работать.

У кого-нибудь есть идеи о том, как восстановить эту функциональность?

+0

Зачем перенаправлять в этой ситуации? Нет нужды. Просто откройте вкладку и запишите клик. – epascarello

+2

Что-то вроде 'onclick = 'onProductClick(); return! Ga.loaded &&! KeyboardJS.activeKeys(). Include (' ctrl ')" должен выполнять задание :) [KeyboardJS] (http: //robertwhurst.github. IO/KeyboardJS /). –

+0

Я думаю, что вы имеете в виду: 'onclick = 'onProductClick(); return! Ga.loaded ||! KeyboardJS.activeKeys(). Include (' ctrl ')" ', правильно? Пробовал это и работает, но теперь у меня проблема, когда страница продукта открыта на обеих вкладках и должна открываться только на новой вкладке. Кроме того, следует ли работать с средним щелчком? – user2266333

ответ

0

Вы могли бы использовать что-то вроде этого:

var my_event; 
document.querySelector("#my_link").addEventListener("click", function(event){ 
    my_event= event; 
    setTimeout(function(){//simulate your call to ga 
     var window_target= my_event.ctrlKey ? "_newtab": "_self"; 
     window.open(my_event.target.href, window_target); 
    },100); 
    event.preventDefault(); 
    return false; 
}); 

но это не является надежным, он не делает, например, ручки средней кнопкой мыши.

Я бы сказал, что нормальное поведение, сценарий ga делает свой запрос, тогда новая страница открывается, как пользователь хочет. На самом деле, я не вижу никаких проблем.

document.querySelector("#my_link").addEventListener("click", function(){ 
//ga call here 
}); 
Смежные вопросы