Java, UX, HTML, CSS, WEB-design

Решение только для CSS для отслеживания пользовательского интерфейса

[ad_1]

  • Красимир Цонев

  • 0 Комментарии

Решение только для CSS для отслеживания пользовательского интерфейса

  • 8 минут чтения

  • Кодирование, Инструменты, CSS, Методы, Визуализация данных, Аналитика

Краткое резюме ↬

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

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

Но что в конечном итоге имеет значение, так это влияние на клиентов. Они продают больше товаров или больше посетителей посещают сайты их кампаний? Окончательные результаты обычно показывают, успешен ли наш проект. И мы полагаемся на статистику как на измерительный инструмент. Мы все используем такие инструменты, как Google Analytics. Это мощный способ сбора данных. В этой статье мы увидим подход, основанный только на CSS, для отслеживания взаимодействий с пользовательским интерфейсом с помощью Google Analytics.

Дальнейшее чтение на SmashingMag:

  • Руководство по Google Analytics и полезным инструментам
  • В поисках лучшей мобильной аналитики
  • Держите свои аналитические данные в безопасности и чистоте
  • Включение многоэкранного отслеживания с помощью Google Analytics
  • Как использовать аналитику для создания более умного мобильного веб-сайта

Проблема

Мы разработали приложение, которое должно было работать на различных устройствах. У нас не было возможности протестировать большинство из них, и мы решили, что нужно сделать все просто. Настолько простой, что не было возможности создать код с ошибками. Дизайн был чистым, минималистичным, и не было никакой сложной бизнес-логики.

Еще после прыжка! Продолжить чтение ниже ↓

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


(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', '......', '......');
ga('send', 'pageview');

Этого сниппета было достаточно для отслеживания просмотров страниц, трафика, сессий и т. д. Кроме того, мы разместили JavaScript там, где пользователь взаимодействует со страницей. Например, щелкнув ссылку, заполнив поле ввода или отметив флажки параметров.


ga('send', 'event', 'ui-interaction', 'click', 'link clicked', 1);

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

Это было не так уж плохо, но клиент поделился другой проблемой. Наше маленькое приложение должно было стать частью частной сети. На компьютерах там был отключен JavaScript из соображений безопасности. Также эта частная сеть была важна для клиента. Итак, он настоял на том, чтобы мы по-прежнему получали статистику по этим делам. Нам нужно было предоставить правильное решение, но проблема заключалась в том, что в качестве инструментов у нас были доступны только CSS и HTML.

Решение

В поисках решения я следил за Сеть вкладку в инструментах разработчика Chrome, когда я заметил следующее:

Отслеживание пользовательского интерфейса с помощью CSS
(Посмотреть большую версию)

Вначале я думал, что в этом нет ничего необычного. Код Google Analytics сделал несколько HTTP-запросов для своих процессов отслеживания. Однако четвертая колонка показывает Content-type заголовок ответа. Это образ. Не JSON или HTML, а изображение. Затем я начал читать документацию и наткнулся на этот обзор кода отслеживания. Самое интересное было:

Когда вся эта информация собрана, она отправляется на серверы Analytics в виде длинного списка параметров, прикрепленных к запросу однопиксельного изображения GIF.

Итак, Google действительно сделал HTTP-запрос, но не тривиальный вызов Ajax. Он просто добавляет все параметры к URL-адресу изображения. После этого он выполняет запрос GIF-файла. Для таких запросов даже есть название: beacon. Мне было интересно, почему GA использует этот подход. Потом я понял, что есть некоторые преимущества:

  • Это просто. Мы инициализируем новый Image объекта и применить значение к его src атрибут:

    new Image().src="https://www.smashingmagazine.com/stats.gif?" + parameters
    
  • Это работает везде. Нет необходимости добавлять обходные пути для разных браузеров, как это делается для запросов Ajax.

  • Крошечный ответ. Как сказал Стоян Стефанов, GIF-изображение размером 1×1px может занимать всего 42 байта.

Я сделал несколько кликов и отправил события в Google Analytics. Зная параметры запроса, я смог создать свои собственные URL-адреса изображений. В итоге осталось только загрузить изображение на страницу. И да, это было возможно с помощью чистого CSS.


background-image: url('https://www.google-analytics.com/collect?v=1&_v=j23&a=...');

Настройка background-image Свойство CSS заставляет браузер загружать изображение. Наконец, мы успешно использовали эту технику для отслеживания действий пользователя.

Отслеживание действий пользователя

Существует несколько способов изменить стили на основе пользовательского ввода. Первое, о чем мы подумали, это :active псевдокласс. Этот класс соответствует, когда элемент активируется пользователем. Это время между моментом нажатия пользователем кнопки мыши и ее отпусканием. В нашем случае это идеально подходило для отслеживания кликов:


input[type="button"]:active {
    background-image: url('https://www.google-analytics.com/collect?v=1&_v=j23&a=...');
}

Еще один полезный псевдокласс :focus. Мы зафиксировали, сколько раз пользователи начали печатать в контактной форме. Было интересно узнать, что примерно в 10% случаев пользователи фактически не отправляли форму.


input[name="message"]:focus {
    background-image: url('https://www.google-analytics.com/collect?v=1&_v=j23&a=...');
}

На одной странице у нас была пошаговая анкета. В конце пользователю было предложено согласиться с некоторыми условиями. Некоторые посетители не выполнили этот последний шаг. В первой версии сайта мы не могли определить, что эти пользователи выбрали в анкете, потому что результаты были бы отправлены после заполнения. Однако, поскольку все шаги были простыми переключателями, мы использовали :checked псевдокласс и успешно отследил выборку:


input[value="female"]:checked {
    background-image: url('https://www.google-analytics.com/collect?v=1&_v=j23&a=...');
}

Одна из самых важных статистических данных, которые мы должны были предоставить, касалась разнообразия разрешений экрана. Благодаря медиазапросам это стало возможным:


@media all and (max-width: 640px) {
    body {
        background-image: url('https://www.google-analytics.com/collect?v=1&_v=j23&a=...');
    }
}

На самом деле существует довольно много логических операторов, которые мы можем использовать. Мы можем отслеживать экраны с определенным соотношением сторон; устройства в альбомной ориентации; или с разрешением 300dpi.

Недостатки

Проблема с таким отслеживанием пользовательского интерфейса CSS заключается в том, что мы получаем только первое появление события. Например, возьмите :active Пример псевдокласса. Запрос фонового изображения запускается только один раз. Если нам нужно фиксировать каждый клик, нам нужно изменить URL-адрес, что невозможно без JavaScript.

Мы использовали background-image свойство для выполнения HTTP-запросов. Однако иногда нам может понадобиться установить реальное изображение в качестве фона из-за дизайна приложения. В таких случаях мы могли бы использовать content имущество. Обычно оно используется для добавления текста или значков, но свойство также принимает изображение. Например:


input[value="female"]:checked {
    content: url('https://www.google-analytics.com/collect?v=1&_v=j23&a=...');
}

Поскольку мы запрашиваем изображение, мы должны убедиться, что браузер не кэширует файл. Сервер статистики должен каждый раз обрабатывать запрос. Мы могли бы добиться этого, предоставив правильные заголовки. Посмотрите на изображение ниже. Он показывает заголовки ответов, отправленные Google:

Отслеживание пользовательского интерфейса с помощью CSS
(Посмотреть большую версию)

Отправка следующих заголовков гарантирует, что браузер не будет кэшировать изображение:


Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

В некоторых случаях мы можем решить написать собственный сервер статистики. Это важное замечание, которое мы должны учитывать во время разработки. Вот простая реализация на основе Node.js. Мы использовали это для целей тестирования:


var fs = require('fs'),
    http = require('http'),
    url = require('url'),
    img = fs.readFileSync(__dirname + '/stat.png'),
    stats = {};

var collectStats = function(type) {
    console.log('collectStats type=" + type);
    if(!stats[type]) stats[type] = 0;
    stats[type]++;
}

http.createServer(function(req, res){
    var request = url.parse(req.url, true);
    var action = request.pathname;
    if (action == "/stat.png') {
        collectStats(request.query.type);
        res.writeHead(200, {'Content-Type': 'image/gif', 'Cache-Control': 'no-cache' });
        res.end(img, 'binary');
    } else {
        res.writeHead(200, {'Content-Type': 'text/html' });
        res.end('Stats server:<pre>' + JSON.stringify(stats) + '</pre>n');
    }
}).listen(8000, '127.0.0.1');
console.log('Server is running at https://127.0.0.1:8000');

Если мы сохраним код в файл с именем сервер.js и выполнить node server.js мы получим сервер, прослушивающий порт 8000. Есть два возможных URL-адреса для запроса:


* https://127.0.0.1:8000/ - shows the collected statistics
* https://127.0.0.1:8000/stat.png?type=something - collecting statistics.

Запрашивая PNG во втором URL-адресе, мы увеличиваем значения. Следующий фрагмент кода показывает HTML и CSS, которые мы должны разместить в браузере:


<input type="button" value="click me"/>

input[type="button"]:active {
    background-image: url('https://127.0.0.1:8000/stat.png?type=form-submitted');
}

Наконец, в качестве последнего недостатка мы должны упомянуть, что некоторые антивирусные программы или настройки браузера могут удалять маяки 1×1px. Поэтому мы должны быть осторожны при выборе этой техники и убедиться, что мы предоставляем обходные пути.

Резюме

CSS обычно считается языком для применения стилей к веб-страницам. Однако в этой статье мы увидели, что это нечто большее. Это также удобный инструмент для сбора статистики.

Сокрушительная редакция
(дс, ил, ог)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — Решение только для CSS для отслеживания пользовательского интерфейса

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Краткое описание по статье Решение только для CSS для отслеживания пользовательского интерфейса

Название: Решение только для CSS для отслеживания пользовательского интерфейса . Краткое описание: [ad_1] ⭐ Красими . Дата публикации: 09.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

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

Сколько лет сайту?

Возраст составляет 3 года

Кнопка «Наверх»