Блог mev'a

все, что я хотел сказать

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%

Связанные записи

Распечатать запись  Распечатать запись
Получить PDF
Добавить в Facebook Добавить в Twitter Добавить в Google-Buzz Добавить в Яндекс-закладки Добавить в Вконтакте

быстрая чистка скважин . корпоративный новый год форум на сайте

13 комментариев

  1. Екатерина пишет 5 мая 2010 2:29 P

    хороший пост

  2. Duna пишет 6 мая 2010 4:03 P

    А ещё можно кликать клавиатурой:) Для особо повернутых:) Типа TAB -> TAB -> TAB -> Enter и вуаля, мы на новой странице вообще без мышки:) Как с этим быть?

  3. mev пишет 6 мая 2010 4:07 P

    Особо повернутые могуть использовать несколько событий. Например прописать onmouseup и onkeyup :)

  4. Max1mus пишет 7 мая 2010 3:24 P

    Так можно колесиком мышки нажать на изображение и оно откроется в новом окне

  5. mev пишет 7 мая 2010 1:33 P

    Это каким образом?

  6. Stekov пишет 10 мая 2010 2:33 P

    А если это мобильный девайс?

  7. mev пишет 10 мая 2010 4:04 P

    Хороший вопрос. Надо будет протестировать срабатывание счетчиков на мобильных девайсах. Как тест будет выполнен обязательно выложу в блоге.

  8. Ильдар Хакимов пишет 27 мая 2010 7:37 P

    Я обычно зажимаю CTRL и левой кнопкой мыши жму. Будьте добры, подскажите как отслеживать нажатие по кнопке подписке по емайл? Я полагаю в этом коде нужно добавить отслеживание, а как добавить не знаю: onsubmit=»window.open(’http://feedburner.google.com/fb/a/mailverify?uri=ildarik/gSrS’, ‘popupwindow’, ’scrollbars=yes,width=550,height=520′);return true»

    И почему у вас нет возможности подписаться на комментарии? Теряете возвратных посетителей.

  9. mev пишет 27 мая 2010 11:47 P

    Событие 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′);»
    Так сначала произойдет вызов метода счетчика, а потом открытие окна с подпиской.

    За напоминание про галку подписки на комменты – спасибо. Забыл активировать плагин.

  10. Роман Рыбальченко пишет 6 июля 2010 1:15 P

    Похоже, и onmouseup — не панацея, потому что я нашел что:

    Событие onMouseUp возникает при отпускании нажатой левой кнопки мыши.

  11. mev пишет 6 июля 2010 5:50 P

    Вот пруфлинк W3C.org
    The onmousedown event occurs when the pointing device button is pressed over an element. This attribute may be used with most elements.
    Про «левость» кнопки ничего нету. Ну и я сам проверял уже: onMouseUp – срабатывает при отпускании нажатой кнопки (любой).

  12. Роман Рыбальченко пишет 10 июля 2010 4:30 P

    Там же и про онклик написано аналогично:
    The onclick event occurs when the pointing device button is clicked over an element. This attribute may be used with most elements.

    Я не проверял пока. Но задам вопрос: вы с онклик аналогичный эксперимент проводили?

  13. mev пишет 11 июля 2010 6:00 P

    Действительно, аналогично. Но эксперименты подтверждают то, что онклик срабатывает на левой кнопке, а onmouseup на любой.

Оставить комментарий или два