Про события натив JS

Событие – это сигнал от браузера о том, что что-то произошло.

Важно:

Событию можно назначить обработчик, то есть функцию, которая сработает, как только событие произошло.

Именно благодаря обработчикам JavaScript-код может реагировать на действия посетителя.

Есть несколько способов назначить событию обработчик. Сейчас мы их рассмотрим, начиная от самого простого.

Есть три способа назначения обработчиков событий:

— Атрибут HTML: onclick=»…».
— Свойство: elem.onclick = function.
— Специальные методы:
1) Современные: elem.addEventListener( событие, handler[, phase]), удаление через removeEventListener.
2) Для старых IE8-: elem.attachEvent( on+событие, handler ), удаление через detachEvent.

Справка про обработчик addEventListner

Еще одна полезная статья

CSS селекторы

SELECTOR DESCRIPTION
.thisclass Matches if element has class “thisclass”
.thisclass.thatclass Matches if element has class “thisclass” and class “thatclass”
#thisid Matches if element has ID “thisid”
#main .navlink Matches if element has class “navlink” and is a descendant of an element with the ID “main”
div#main > .navlink Matches if element has class “navlink” and is the direct child of a DIV element with the ID “main”
:checked Matches if element is checked (radio button or checkbox)
[data-title*=”chairman mao”] Matches if element has attribute “data-title” with the string “chairman mao” somewhere in its value
a[href$=”.pdf”] Matches if element is a link (A) with a HREF attribute that ends with “.pdf”
.contactmail:only-child Matches if element has class “contactmail” and is the only child of its parent

Источник: https://www.simoahava.com/analytics/matches-css-selector-operator-in-gtm-triggers/

 

cookieDomain : auto или Субдоменное отслеживание

Проблема:

However, if the visitor first visits test.simoahava.com, and then moves to www.simoahava.com, these two domains will have different _ga cookies, and thus different Client IDs, and thus the user will be a different user with a new session!

Вот пример:

https://screenpresso.com/=DSBic

https://screenpresso.com/=eTsOf

Решение:

 

Почему это исправит ситуацию:

The answer is in the cookieDomain setting. When you set cookieDomain to auto, the following will happen with a (fictional) domain like www.simoahava.co.uk:

GA tries to write the cookie on .co.uk, which is the first possible root domain candidate. This fails because the browser is not authorized to write a cookie on a top-level domain like that.
Next, GA tries to write the cookie on .simoahava.co.uk, which is the next possible root domain candidate. This works because that’s a valid domain to write the cookie on.

Пользовательские переменные в Google Tag Manager

http://prometriki.ru/polzovatelskie-peremennie-v-google-tag-manager-chast-2/

Тип Переменная JavaScript

Принимает значение переменной JavaScript, имя которой указано в поле Имя глобальной переменной

Тип Пользовательское событие

Принимает значение, равное текущему значению переменной event.

Тип Собственный код JavaScript

Один из самых полезных типов переменных, указав который можно “написать” собственную переменную на языке JavaScript, в зависимости от различных условий. Обязательно содержимое макроса должно быть заключено в конструкцию вида:

function(){
ВАШ КОД НА JAVASCRIPT
return ОДНА ИЗ ПЕРЕМЕННЫХ ИСПОЛЬЗОВАВШИХСЯ ВЫШЕ;
}

Тип Таблица поиска

Также один из полезнейших типов переменных, который позволяет избежать использование конструкций if … else, а также switch. Поскольку лучше один раз увидеть, подготовил изображение с комментариями, думаю, что это наиболее удобный вариант описывающий логику работы переменной:

 

Тип URL

Это переменная для работы с различными URL. Каждый URL описывается следующим образом:

 

О dataLayer

Итак, начнем с главного – dataLayer это название переменной JavaScript, которая служит для передачи данных, которые Google Tag Manager не может получить сам, но они необходимы ему для работы, такая переменная называется уровнем данных.

С одной стороны, это массив (об этом говорят квадратные скобки и сам метод push()). С другой стороны – это объект (почему нет?). Ведь у него есть свойства и методы.

dataLayer.push(); Конструкция push() предназначена для добавления значения в массив, не более.