Как вы отслеживаете пользователей Caps Lock с помощью Google Analytics?

Мне нравится работать с Google Analytics и тем, как я могу собирать информацию о наших посетителях. Мы используем переменные клиента для отслеживания информации о том, кто и как пользователи взаимодействуют с нашим сайтом. Оставаясь верными цели аналитики, мы всегда ищем способы улучшить и оптимизировать наш веб-сайт.

В настоящее время мы находимся на этапе разработки, когда мы можем выбирать, как мы хотим хранить и представлять информацию о продукте. Один из возникших вопросов заключался в том, следует ли отображать информацию о продукте заглавными буквами или нет. Работая с нашими пользователями в течение последних нескольких лет, кажется, что большая часть нашего трафика поступает от посетителей, у которых есть заглавные буквы. Это заставило нас задуматься, можем ли мы отслеживать наших пользователей Caps Lock с помощью переменной клиента, чтобы мы могли принять более обоснованное решение о том, как представить информацию?

Посмотрите этот образец, который я собрал вместе: http://jsfiddle.net/shanabus/Za4kL/

Наш сайт в основном представляет собой стандартный сайт электронной коммерции. Есть несколько различных текстовых полей, которые позволяют вам искать номера деталей, и на протяжении всего процесса заказа есть несколько мест, где пользователи могут вводить текст. Вы бы привязали тест Caps Lock ко всем текстовым полям или только к обычным? Будет ли снижение производительности, если я привяжу прослушиватель нажатия клавиш ко всем текстовым полям на сайте, или это незначительно? Есть ли лучший способ реализовать это?

Я предполагаю, что вместо того, чтобы показывать/скрывать div, я бы вместо этого установил пользовательский var:

_gaq.push('_setCustomVar', 5, 'capslock', 'true', 3);

Спасибо за любые мысли и соображения по этой, казалось бы, тривиальной теме.


person shanabus    schedule 16.01.2012    source источник
comment
зачем вам знать, что у них нажат Caps Lock? просто используйте функцию strtolower, прежде чем искать в своей базе данных.   -  person ted    schedule 16.01.2012
comment
@ted, дело не в том, как мы обращаемся с данными, которые они ищут. В духе аналитики мы просто пытаемся зафиксировать, сколько пользователей посещают наш сайт с включенными заглавными буквами по сравнению с теми, у кого их нет.   -  person shanabus    schedule 16.01.2012
comment
+1 за крутость добавления var для пользователей капслока.   -  person Nanne    schedule 16.01.2012
comment
По крайней мере, мне сложно представить, что преобразование текста в SHOUT CAPS увеличит чье-то счастье.   -  person tripleee    schedule 16.01.2012


Ответы (1)


Я бы привязал событие глобально и использовал следующий код:

var CAPS_ON = null;
$(window).keypress(function(ev) {
    var charCode = ev.which; //jQuery normalizes ev.charCode to ev.which
    // Lowercase chars
    if (charCode >= 97 && charCode <= 122) {
        CAPS_ON = ev.shiftKey; // Caps are off if SHIFT is not pressed
    } else if (charCode >= 65 && charCode <= 90) {
        CAPS_ON = !ev.shiftKey;
    }
});

Это создает переменную CAPS_ON, которую можно использовать на всей странице.

Дальнейшее объяснение кода:

  • Событие должно быть привязано к событию keypress, потому что это единственное ключевое событие, которое различает символы нижнего и верхнего регистра.
  • Необходимо проверить свойство shiftKey, поскольку оно инвертирует функцию CAPS LOCK.
person Rob W    schedule 16.01.2012
comment
Конечно, это требует от пользователя нажатия клавиши. Но от этого никуда не деться. Возможно, вы захотите связать это с $(window).one('keypress', …), чтобы избежать накладных расходов на каждое нажатие клавиши. - person Michael Mior; 16.01.2012
comment
@MichaelMior Это хороший совет, если нужно знать только начальное состояние блокировки CAPS. Однако, когда вас интересует состояние при отправке формы, следует использовать текущий метод. - person Rob W; 16.01.2012
comment
@Michael Mior, это отличный комментарий, но большинство наших посетителей выполняют поиск на нашем сайте. Много раз их поисковый запрос начинается с числа. Приведенный выше код захватывает только az и AZ, поэтому, если первая буква поискового запроса является числом, у нас не будет самой точной информации. - person shanabus; 16.01.2012
comment
@RobW Абсолютно. Хотя, если вас интересует конкретная форма, то вы, вероятно, захотите прослушивать только нажатия клавиш в этой форме. - person Michael Mior; 16.01.2012
comment
@shanabus Тоже хороший момент. Возможно, вы захотите отменить привязку события после того, как CAPS_ON будет установлено после нажатия клавиши в вашей форме. Если пользователи меняют заглавные буквы во время ввода, данные, вероятно, все равно не будут иметь смысла. - person Michael Mior; 16.01.2012
comment
@shanabus Это самое близкое, что вы можете получить, используя JavaScript. Нет 100% надежного способа проверить, является ли текст в верхнем регистре с помощью CAPS LOCK: можно скопировать и вставить текст, отключить JavaScript, смешать регистр и т. д. - person Rob W; 16.01.2012
comment
Этот ответ принят, поскольку для меня это был лучший способ установить переменную перед вызовом моего кода отслеживания. - person shanabus; 14.02.2012