Несколько условий для отслеживания всех кликов с помощью Google Analytics - PullRequest
2 голосов
/ 19 марта 2012

Я пытаюсь отследить все ссылки, на которые нажала Google Analytics, как события. Поэтому я написал несколько jQuery, чтобы уловить это. Я только начинаю с jQuery, так что я не знаю, делаю ли я это наиболее эффективным способом, поэтому я хотел бы получить отзывы или предложения о том, как улучшить код. Чем проще и быстрее, тем лучше отслеживание аналитики.

РЕДАКТИРОВАТЬ: Вот последний код. Я не могу понять, почему последняя кнопка и с 3-го до последнего возвращают неопределенные значения. http://jsfiddle.net/uqj88/

Вот код, который у меня есть:

    $(document).ready( function() {
      var pageURL = window.location.pathname;
      var linkText;

      $('a').click(function (e) {
          if ($(this).text() != ""){
                linkText = $(this).text();
          }
          else if (($(this).text() === "") && ($(this).children("img") != "") && ($(this).children("img").attr("alt") != "")) {
                linkText = $(this).children("img").attr("alt");
          }
          else if (($(this).text() === "") && ($(this).children("img") != "") && ($(this).children("img").attr("alt") === "")) {
                linkText = $(this).children("img").attr("src").split("/").pop();
          }
          _gaq.push(['_trackEvent', pageURL, 'click', linkText]);
          if (($(this).attr('target') != '_blank') || ($(this).attr('target') != '#')) {
                e.preventDefault();
                setTimeout('document.location = "' + $(this).attr('href') + '"', 150);
          }
      });
      $('button').click(function () {
          linkText = $(this).text();
          _gaq.push(['_trackEvent', pageURL, 'click', linkText]);
      });
      $("input[type='submit']").click(function () {
          if ($(this).attr("value") != ""){
                linkText = $(this).attr("value");
          }
          else if (($(this).attr("value") === "") && ($(this).prop("id") != "")) {
                linkText = $(this).prop("id");
          }
          else if (($(this).attr("value") === "") && ($(this).prop("class") != "")) {
                linkText = $(this).prop("class");
          }
          else {
                linkText = "button";  
          }
          _gaq.push(['_trackEvent', pageURL, 'click', linkText]);
      });
    });

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

Просто к вашему сведению, который может избавить вас от некоторых аналитических головных болей ... _trackPageview и _trackEvent работают, запрашивая пиксель отслеживания у Google.Если вы покинете страницу до того, как запрос сможет завершиться, вы получите несогласованные данные.Событие может или не может быть подсчитано, в зависимости от ряда вещей, которые вы не можете контролировать.

Один из способов справиться с этим - задержать переход по ссылке на небольшое количество (в данном случае 150 мс) если ссылка не открывается в новом окне.

$('a').click(function (e) {
    <snip>
    _gaq.push(['_trackEvent', pageURL, 'click', linkText]);
    if ($(this).attr('target') != '_blank') {
        e.preventDefault();
        setTimeout('document.location = "' + $(this).attr('href') + '"', 150);
    }
});
1 голос
/ 20 марта 2012

Я исправил твой пример. Я считаю, что в более новых версиях jQuery (например, 1.7+) рекомендуется не использовать метод attr. Я проверил это с помощью метода prop, и теперь он работает: http://jsfiddle.net/shanabus/uqj88/3/

Кроме того, я знаю, что это был пример кода, но казалось странным, что вы использовали объявление var перед каждым использованием linkText, я думаю, что это немного портит область действия переменной.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...