Невозможно получить текущее значение клика через Adobe Launch - PullRequest
0 голосов
/ 03 июля 2019

Я создал событие щелчка при запуске Adobe, которое захватит значение ссылки и отправит ее в аналитику.Я создал элемент данных для сохранения значения, и в моем DOM я сохраняю значение в локальном хранилище.

Код локального хранилища:

$('.card').click(function() {
       var name = $(this).text();
       localStorage.setItem('productName', name);
     });

Моя проблема заключается в том, что при нажатии на первую ссылкуникакое значение не было сохранено, но после того, как я нажал вторую ссылку, он сохраняет значение первой ссылки, а на третьей ссылке сохраняет значение второй ссылки и так далее.Я хочу сохранить текущее значение ссылки в переменной evar3.

Элемент данных

Правило

Установить переменные

Спасибо, Harshit

1 Ответ

1 голос
/ 03 июля 2019

Я немного ломаю голову над тем, почему ваш селектор jQuery не соответствует вашему селектору правил, но, вероятно, это не имеет непосредственного отношения или уместности, учитывая, что вы сказали, что видите всплывающие данные, в общем , так что по номиналу я собираюсь игнорировать это.

Но в целом, похоже, что ваш код jQuery выполняется после оценки правила, поэтому он фактически на шаг позади.Я не уверен, что с этим можно что-то сделать, если вы хотите сохранить два отдельных прослушивателя событий щелчка, как это.

Вам придется реструктурировать, чтобы одна цепочка была от другой (что я не думаю, что это реально возможно с помощью jQuery> Запустить как есть. Возможно, если вы напишите два отдельных блока кода с обещаниемцепочка, но такие обходные пути Launch и IMO слишком усложняют вещи для начала (см. ниже)).А еще лучше, объединить их в прослушиватель событий одним щелчком мыши.На этой ноте ..

Почему do у вас есть два отдельных прослушивателя событий щелчка?Является ли единственной причиной для этого выдать текст ссылки?Потому что вы можете ссылаться на выбранный элемент в самом Правиле запуска.

Вы должны иметь возможность ссылаться на %this.innerText% в полях Set Variables .Или вы можете ссылаться на объект this в пользовательских полях кода внутри правила.

IOW по номинальной стоимости. Я не понимаю, зачем вам нужно или нужно создавать / использовать этот слушатель jQuery или отправлять его в локальное хранилище.

Обновление:

Вы прокомментировали следующее:

Я пытался с% this.innerText%, он также не показывает текущие значения.Сначала я отправляю значение в локальное хранилище, потому что мои значения ссылок генерируются во время выполнения через API.Они не жестко закодированы.Я также пытаюсь выяснить, почему мое правило срабатывает до того, как моя jquery будет оценена.Но когда я проверяю в консоли, используя _satellite.getVar('Product Name');, он показывает мне правильное значение, но в консоли отладчика значение неверно.Можете ли вы показать мне, как вы хотите создать правило для правильного запуска?Спасибо,

Хорошо, так что ваши значения ссылок генерируются во время выполнения через вызов API?Хорошо, теперь звучит так, как будто есть проблема (синхронизации), и в принципе это та же проблема, о которой я упоминал, что у вас возникли между jQuery и Launch code.Предполагая, что вы не можете изменить эту функцию динамического соединения, у вас есть два варианта:

1.Явно инициируйте правило запуска (правило прямого вызова) в обратном вызове из кода API, который генерирует значения ссылки.

Это лучший метод, поскольку у вас не будет проблем с состоянием гонкис вашим API против кода отслеживания ссылок.Самым большим предупреждением об этом методе является то, что он требует от вас активного добавления кода на сайт, что может или не может быть осуществимо для вас.

Я понятия не имею, какой у вас код для генерацииссылка выглядит примерно так, но, вероятно, это какой-то вызов ajax, сгенерированный из обратного вызова successТаким образом, в обратном вызове вы бы добавили строку кода примерно так:

_satellite.track('product_image_click', {
    text : elem.innerText
});

Опять же, я не знаю, как выглядит ваш код API, который генерирует ссылку, но, вероятно, у вас есть внутри негонекоторый объектный элемент, который вы добавляете или обновляете DOM, поэтому в этом примере я буду ссылаться на него как elem.

'product_image_click' - это значение, которое вы используете для идентификатора правила прямого вызова винтерфейс, например:

enter image description here

И затем вызов _satellite.track() также включает полезную нагрузку объекта во 2-м аргументе, который можно передать правилу прямого вызова.Поэтому в приведенном выше коде я установил свойство с именем text и присвоил ему значение elem.innerText.

Затем в правиле прямого вызова, в котором вы устанавливаете переменные, на передаваемые вами данные можно ссылаться из объекта event.details в поле пользовательского кода (например, event.details.text) или с помощью синтаксиса % внутриполя интерфейса (например, %event.details.text%).

enter image description here

2. Используйте setTimeout, чтобы отложить оценку ссылки.

Единственное преимущество этого метода перед вариантом # 1 в том, что он пассивен. Вам не нужно добавлять код прямо на ваш сайт, чтобы он работал.

Однако, это более темный вариант, потому что вы не знаете, сколько времени потребуется, чтобы сгенерировать вашу ссылку. Но, вообще говоря, если вы можете определить, что API в среднем генерирует ссылки, скажем, в среднем 250 мс, и вы устанавливаете тайм-аут для вызова, скажем, 300-500 мс, то вы, вероятно, будете в большинстве случаев в порядке. Тем не менее, это никогда не 100% гарантия.

Кроме того, если щелчок по ссылке в конечном итоге перенаправит посетителя на другую страницу, то это решение, скорее всего, вообще не будет работать для вас, поскольку браузер почти наверняка будет перемещаться до того, как появится возможность его выполнения. Из-за этого я, как правило, даже не упомянул бы это как вариант, но так как вы упомянули, что эта ссылка включает в себя API, который генерирует значения ссылки при нажатии, я подумал, что, возможно, это не ссылка навигации / перенаправления, так что, возможно, это это вариант, к которому вы можете обратиться, если вы не можете сделать вариант № 1.

Сначала создайте правило прямого вызова, аналогичное показанному в опции № 1. Это будет правило, которое получает текст ссылки и вызывает Adobe Analytics (или любой другой маркетинговый тег).

Затем создайте отдельное правило как событие щелчка, аналогичное тому, что вы в настоящее время пытаетесь сделать (прослушивание щелчка по ссылке, на основе вашего селектора CSS). В этом правиле вы не будете устанавливать никакие переменные AA. Вместо этого добавьте пользовательский блок js с кодом, подобным следующему:

var elem = this;
(function (elem) {
    window.setTimeout(function() {
        _satellite.track('product_image_click', {
            text : elem.innerText
        });
    }, 500);
})(elem);

Поэтому, когда правило сработает, оно создаст обратный вызов setTimeout для вызова первого правила, передавая текст ссылки в полезной нагрузке. И ... надеюсь, время ожидания 500 мс, показанное в примере кода, будет достаточным для API, чтобы сделать свое дело Вы можете настроить его вверх или вниз.

...