Пользовательское значение javascript не обновляется в диспетчере тегов Google

#javascript #google-tag-manager

Вопрос:

Я создал пользовательскую переменную JavaScript в GTM, чтобы вывести заголовок формы во всплывающей форме.

Я использую видимость элементов и селектор CSS для идентификации форм.

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

Итак, CJS-это:

 function() {
return  document.querySelector ('div._form-title').innerText
}
 

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

Это похоже на то, что он не может получить самый последний.

Тег запускается при отображении элемента и наблюдает за изменениями DOM, поэтому я бы подумал, что переменная CJS снова запустится для обновленного значения, но это не так.

Есть какие-нибудь идеи?

В противном случае в переменных, которые появляются автоматически при загрузке всплывающего окна, «Текст щелчка» отображается как весь текст формы.

Таким образом, альтернативным способом сделать это может быть возврат текста щелчка, но его сокращение — знаете ли вы, как вернуть, например, только первые 25 символов переменной «Текст щелчка»?

Заранее спасибо 🙂

Ответ №1:

На странице с несколькими формами (или несколькими элементами, соответствующими селектору) это всегда вернет первое совпадение. Вот как раз такой документ.querySelector работает, а не что-то специфичное для GTM (также не используйте пользовательский HTML для получения узлов DOM, используйте встроенный тип переменной DOM — это позволяет избежать использования eval, что хорошо для безопасности и производительности и позволяет применять более строгие политики безопасности контента, если это для вас проблема).

Если вы говорите, что, используя кнопку текстового представляет собой жизнеспособную альтернативу вам не нужно укоротить его (вы могли бы сделать это в пользовательскую переменную JavaScript, которая возвращает подстроку {{щелкните текст}} переменной, но поскольку вам не придется вводить на кнопку текст в любом месте, это лишнее), просто использовать starts with условие в фильтр и первый матч 25 символов:

триггерный фильтр с условием quot;начинается сquot;

Комментарии:

1. Привет, спасибо за ваш ответ. Что касается 2 — й части — текста щелчка-фактический текст щелчка одинаков для каждой формы, я не пытаюсь идентифицировать их с этим. Но в переменных, которые отображаются, когда отображается всплывающая форма, имя формы отображается в тексте щелчка, даже если технически нет щелчков по элементу видимого действия. Поэтому я хочу отобразить текст щелчка в виде метки, но мне нужны только первые 25 символов. Вы знаете, как это возможно? Большое спасибо

2. Я предполагаю, что это будет что-то вроде функции() { return {{click — text}} XXXX} — XXXX-это немного о том, как обрезать ответ. Но я не знаю JS 🙂

3. Извините, наконец, потому что я не знаю, как сделать абзац, я не понимаю вашего комментария о том, что вы не используете пользовательский HTML для получения узлов DOM, но я использую встроенную переменную пользовательской переменной javascript с кодом, который я привел выше, вы это имеете в виду?