Google Analytics жутко мне понравился, потому-то как раз про него практически все мои последние посты в блоге. Интерес у меня не просто потребительский - ищу глюки, ошибки, возможности хитрого использования.
Сегодня хочу поделиться найденным подводным камнем. Камень этот - событие onclick, которое используют для отслеживания событий, переходов по внешним ссылкам.
Потенциальная проблема - используя это событие в ссылках можно потерять часть данных о кликах.
Суть проблемы заключается в смысле события onclick - оно наступает, когда происходит нажатие левой кнопки мыши на элементе. Именно левой!
Если вы кликнете правой кнопкой и выберите в контекстном меню "Открыть в новой вкладке" - событие onclick не сработает, Google Analytics не сможет ничего посчитать, вы потеряете часть посещений или событий.
Если вы повесили событие onclick на кнопку, то тут ничего страшного нет, у нее только onclick и есть, по другому ее не нажать. А вот если у вас кнопка не button, а стилизованный div, то onclick будет не всегда работать.
Поясню на примере. Вы можете увидеть под постом кнопки отправки ссылки на пост в разные социальные сети. До этого дня ссылки выглядели так (в примере кнопка отправки ссылки в твиттер):
<a onclick="javascript:pageTracker._trackEvent('PostEvents','ShareTwitter','Google Analytics и отслеживание событий');" href="http://twitter.com/home/?status=http://bit.ly/a54dKP" target="_blank">...</a>
У меня есть привычка, когда я брожу по интернету и натыкаюсь на интересную ссылку, то я открываю ее в отдельной вкладке с целью ознакомиться с ней после прочтения основной страницы. То же самое я сделал с этой кнопкой, когда написал прошлый пост. Я открыл ее в отдельной вкладке. Хотя я знал, что ссылка откроется в новой вкладке (сам прописывал "target='_blank'" в ссылке). Тут до меня дошло, что часть ссылок с onclick-событиями на моем блоге будут бесполезны, потому что часть посетителей будет делать как я - открывать в новой вкладке через контекстное меню.
Приведу пример ссылок на основе своего блога, на которые я не кликнул бы левой кнопкой мыши (ниже объясню почему):
- ссылка на фотоальбом Picasa
- ссылка на RSS
- ссылки добавления ссылки на пост в социальные сети
- ссылки на скачивание файла - я просто скопирую ссылку
Вы спросите, почему не кликнуть левой кнопкой мыши, ведь ссылка может иметь параметр target="_blank"? Ответ: я не уверен, обладает ли ссылка этим параметром, откроется ли желаемая страница в отдельной вкладке. Наличие параметра target со значение _blank визуально не определить, не заглядывая в исходный код страницы. Меня не устраивают такие ситуации, когда мне приходится возвращаться назад из-за того, что владелец сайта не прописал на ссылке на RSS-ленту этот параметр, хотя по идее он должен там быть. Вот такой вот психологический нюанс связан с открытием в новой вкладке. Уж лучше я сразу открою ссылку в новой вкладке, чем буду надеяться на то, что ссылка откроется так сама.
Потому-то я заменил во всех ссылках onclick на onmouseup.
<a onmouseup="javascript:pageTracker._trackEvent('PostEvents','ShareTwitter','Google Analytics и отслеживание событий');" href="http://twitter.com/home/?status=http://bit.ly/a54dKP" target="_blank">...</a>
Событие onmouseup происходит в тот момент, когда отпускается кнопка мыши после нажатия. Это позволяет нам отследить клик любой кнопкой мыши, даже правой. А правая кнопка мыши обычно нажимается на ссылке для следующих действий (смотрим в контекстное меню):
- открыть в новой вкладке
- открыть в новом окне
- копировать ссылку
- отправить ссылку
- добавить ссылку в закладки
То есть все взаимодействия с ссылкой через контекстное меню будут отслеживаться. Согласитесь, количество кликнувших правой кнопкой мыши просто так довольно мало, лучше посчитать их, чем потерять остальных.
Резюме: используя событие onclick в ссылках вы потеряете часть данных в Google Analytics - правый клик мыши по ссылке с целью открытия в новом окне/вкладке, копирования ссылки не будут учтены.
P.S.: а вы тоже открываете интересующие вас ссылки в отдельной вкладке? Или полагаетесь на случай?
Популярность: 2%
Связанные записи
Распечатать запись
хороший пост
А ещё можно кликать клавиатурой:) Для особо повернутых:) Типа TAB -> TAB -> TAB -> Enter и вуаля, мы на новой странице вообще без мышки:) Как с этим быть?
Особо повернутые могуть использовать несколько событий. Например прописать onmouseup и onkeyup
Так можно колесиком мышки нажать на изображение и оно откроется в новом окне
Это каким образом?
А если это мобильный девайс?
Хороший вопрос. Надо будет протестировать срабатывание счетчиков на мобильных девайсах. Как тест будет выполнен обязательно выложу в блоге.
Я обычно зажимаю CTRL и левой кнопкой мыши жму. Будьте добры, подскажите как отслеживать нажатие по кнопке подписке по емайл? Я полагаю в этом коде нужно добавить отслеживание, а как добавить не знаю: onsubmit=»window.open(’http://feedburner.google.com/fb/a/mailverify?uri=ildarik/gSrS’, ‘popupwindow’, ’scrollbars=yes,width=550,height=520′);return true»
И почему у вас нет возможности подписаться на комментарии? Теряете возвратных посетителей.
Событие submit работает только на формах. А у вас кнопка, полагаю, отдельно стоит, без формы. Потому там лучше использовать onmouseup. В обработчик события перед «window.open…» надо дописать вызов счетчика.
Пример
onclick=»javascript:pageTracker._trackEvent(’Test’, ‘ClickTest’, ‘Test onclick’);window.open(’http://feedburner.google.com/fb/a/mailverify?uri=ildarik/gSrS’, ‘popupwindow’, ’scrollbars=yes,width=550,height=520′);»
Так сначала произойдет вызов метода счетчика, а потом открытие окна с подпиской.
За напоминание про галку подписки на комменты – спасибо. Забыл активировать плагин.
Похоже, и onmouseup — не панацея, потому что я нашел что:
Событие onMouseUp возникает при отпускании нажатой левой кнопки мыши.
Вот пруфлинк
The onmousedown event occurs when the pointing device button is pressed over an element. This attribute may be used with most elements.
Про «левость» кнопки ничего нету. Ну и я сам проверял уже: onMouseUp – срабатывает при отпускании нажатой кнопки (любой).
Там же и про онклик написано аналогично:
The onclick event occurs when the pointing device button is clicked over an element. This attribute may be used with most elements.
Я не проверял пока. Но задам вопрос: вы с онклик аналогичный эксперимент проводили?
Действительно, аналогично. Но эксперименты подтверждают то, что онклик срабатывает на левой кнопке, а onmouseup на любой.