Связь с событием OnClick по какой-либо причине не будет срабатывать / работать? - PullRequest
2 голосов
/ 10 января 2012

У меня есть следующая ссылка для отслеживания поездок между сайтами для Google Analytics:

<a href="http://example.com/test.html" 
   onclick="_gaq.push(['_link', 'http://example.com/test.html']); 
   return false;"     
   class="noFloat" 
   target="_blank"> 
   Click Me
</a>

Я пытаюсь отладить, почему эта ссылка не работает, я нажимаю на нее, и не открывается новое окно. Просто хотел подтвердить, что это проблема с кодом выше, или это будет что-то еще на моей странице, ломая это? Если это так, я вернусь к отладке JavaScript.

Ответы [ 6 ]

3 голосов
/ 10 января 2012

Поведение ссылки предотвращается return false;. Чтобы ссылка была завершена как обычно, просто удалите ее:

<a href="http://example.com/test.html" 
   onclick="_gaq.push(['_link', 'http://example.com/test.html']);"     
   class="noFloat" 
   target="_blank"> 
   Click Me
</a>
2 голосов
/ 10 января 2012

Встроенный способ передачи информации cookie, который вы используете, не будет работать, если ссылка открывается в новом окне (target="_blank"), return-false в основном переписывает функции этого a-тега.

Вы должны изменить href="" тега <a>:

<a href="http://example.com/test.html" 
   id="ext-link"     
   class="noFloat" 
   target="_blank"> 
   Click Me
</a>

И затем иметь следующий javascript:

_gaq.push(function() {
  var pt = _gat._getTrackerByName(),
      link = document.getElementById('ext-link');
  link.href = pt._getLinkerUrl(link.href);
});
0 голосов
/ 03 октября 2015

После прохождения ответов ни один из них не сработал полностью. В моем случае ссылка была структурирована следующим образом:

<a href="http://www.google.com/" target="_blank" onclick="trackOutboundLink('http://www.google.com'); return false;" >
Outbound Link</a>

Сломанный JS в нижнем колонтитуле

var trackOutboundLink = function(url) {
   ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
     function () {
     document.location = url;
     }
   });
}

Исправлено JS в нижнем колонтитуле:

var trackOutboundLink = function(url) {    
 ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
   function () {
    window.open(url, '_blank');
   }    
 }); 
}

Первоначально JS не указывал цель, поэтому он открывался в том же окне. Удаление «return false» позволило сработать как a href, так и onclick, что привело к открытию двух окон.

0 голосов
/ 03 мая 2014

Рори МакКроссан прав, что «return false» остановит поведение ссылки по умолчанию, но это неполный ответ для этой ситуации. Метод _link, отправленный в Google Analytics (GA), вызовет перенаправление после завершения обработки. GA нужно время, чтобы завершить. Подробнее см .: http://bit.ly/1iasHQh

Причиной сбоя перенаправления GA является другая проблема. Две теории: (1) Я однажды сталкивался с этой ситуацией и понял, что это потому, что я использую Chrome и у меня установлена ​​надстройка «Отказ от участия в Google Analytics». (2) Метод "_link" может быть несовместим с использованием target = "_ blank". Если вы используете target для открытия нового окна / вкладки, вы можете безопасно удалить «return false;» потому что текущая страница, обрабатывающая Javascript, не будет закрыта, что все равно позволит GA делать свое дело.

Надеюсь, что помогает другим.

0 голосов
/ 10 января 2012

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

0 голосов
/ 10 января 2012

как насчет:

<a href="#" onclick="Clicked();" class="noFloat" target="_blank"> 
   Click Me
</a>

function Clicked()
{
_gaq.push(['_link', 'http://example.com/test.html']); 
window.location = "http://example.com/test.html";
return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...