2015-11-04 5 views
0

Это почти покрытая тема для оригинальная Кнопки FB/Twitter. Но что, если у меня есть собственная кнопка «share on fb»? Как это:Сопротивление социальных акций в GA

<div id="fb_share"><a target="_blank" href="http://www.facebook.com/share.php?u=blah-blah">Share on FB</a></div> 

поэтому я придумал решение folloing:

var FBbtn = document.getElementById("fb_share"); 
    FBbtn.addEventListener('click', function() { 
     ga('send', 'social', { 
     'socialNetwork': 'facebook', 
     'socialAction': 'share', 
     'socialTarget': window.location 
    }); 
    //console.log('tracked'); 
}); 

Это помещается после кода Google Analytics. Несмотря на то, что он не поймает обратный вызов FB - он должен сделать трюк, но по какой-то причине я все еще не вижу никаких результатов в Analytics, так что вопрос в следующем: будет ли решение действительно работать? На самом деле это может быть даже, как это я верю:

<a href="http://www.facebook.com/share.php?u=blah-blah" onClick="ga('send', 'social', 'Facebook','Share',window.location.href);");">FB</a> 
+2

В вашей ссылке отсутствует идентификатор, поэтому FBtn не определен. Однако ваш второй пример должен работать. –

+1

Ваш второй пример описывает атрибут 'href'« hre ». Убедитесь, что вы не делаете этого в своем фактическом коде. –

+0

да-да ... извините, ребята - оба (идентификатор и правильное написание «href»), конечно, присутствуют. Я исправил вопрос – Rossitten

ответ

2

Ваш «доля на Facebook» ссылки заставляет страницу навигации (а не открывать окно/вкладку новый). Когда эта навигация происходит, большинство основных браузеров отменяют все ожидающие запросы HTTP для текущей страницы, а затем переходят на новую страницу (fb.com).

В этом случае одним из ожидающих HTTP-запросов будет вызов отслеживания событий GA который никогда не будет завершен и никогда не будет принят серверами GA.

Что вам нужно использовать - это функция обратного вызова ударов GA, это по существу отменяет нативную навигацию (до FB), отправляет вызов отслеживания и ждет достаточно времени для его завершения, а затем перенаправляет JavaScript на следующую страницу.

Вы должны read the google docs here

В вашем случае ваша функция отслеживания событий должен быть похож на это:

var FBbtn = document.getElementById("fb_share"); 
FBbtn.addEventListener('click', function() { 
    ga('send', 'social', { 
    'socialNetwork': 'facebook', 
    'socialAction': 'share', 
    'socialTarget': window.location, 
    'hitCallback': function(){ 
     window.location = this.href; 
    } 
    }); 
    //console.log('tracked'); 
    return false; 
}); 

Так я сделал следующие изменения:

  1. Добавлено свойство hitCallback к вызову отслеживания событий. это анонимная функция, которая вызывается после того, как серверы GA отправили свой ответ на отслеживание событий.
  2. добавил инструкцию 'return false', которая отменяет встроенную функциональность, а затем использует функцию hitCallback для навигации.
+1

Я не уверен, что это правда - Universal Analytics должна (в браузере, который поддерживает это) использовать navigator.sendBeacon, который специально разработан для работы, даже если страница выгружена - см. Https: // developers. google.com/analytics/devguides/collection/analyticsjs/field-reference#transport (я указываю это только для справки - hitCallback будет поддерживать старые браузеры, которые не отправилиBeacon, и, таким образом, это хорошее решение в любом случае) , –

+1

Его хороший вопрос Eike, однако я видел, что это происходит на клиентских сайтах недавно даже с использованием Chrome 45+, который теоретически должен поддерживать navigator.beacon. Это то, что я буду поднимать с помощью программы партнеров, чтобы узнать, что такое официальный статус. –

+0

Спасибо, ребята! – Rossitten

Смежные вопросы