Как захватить текст рядом с нажатием кнопки для метки события - PullRequest
1 голос
/ 28 марта 2019

Я отслеживаю некоторые загрузки ресурсов с помощью диспетчера тегов. На странице есть несколько загружаемых ресурсов, каждый с кнопкой «Загрузить ресурс».

Я хочу создать один тег в менеджере тегов, чтобы охватить все эти загрузки, используя метку события, чтобы указать тип ресурса: например, «изображение в полном объеме», «изображение рекламы в Facebook» и т. Д.

Обычно для этого я использовал бы переменные 'click text' или 'click URL', но в этом случае я не могу. Все кнопки загрузки имеют одинаковый текст (по-видимому, это не может быть изменено), а URL-адрес содержит только номер ресурса, созданный CMS, а не описательный URL-адрес.

Однако над каждой кнопкой есть h4, который включает в себя название актива:

Есть ли способ создать переменную в менеджере тегов, которая будет очищать содержимое h4 чуть выше кнопки при ее нажатии?

Я создал переменную для h4, но она просто захватывает содержимое первого h4 на странице (а не того, которое ближе всего к нажатию кнопки).

<div class="content">
     <h4>Full Bleed</h4>
     <div class="copy">
          <p>Perfect for social media.</p>
     </div>
     <div class="btn-container">
          <a href="URL?assetNo=17232568" class="btn" >Download assets 
          </a>
     </div>
</div>

1 Ответ

0 голосов
/ 29 марта 2019

Да, есть способ сделать это.Это требует некоторой утилизации.

Вы можете создать новую пользовательскую переменную JavaScript и использовать встроенную переменную {{Click Element}} - затем получить родительский узел , например:

{{Click Element}}. ParentNode

Это должно вернуть весь <div class="content"> элемент.Затем просто найдите внутри этого элемента <h4>, например, так:

{{Click Element}}. ParentNode.getElementsByTagName ("h4") [0]

  • это ваше "Полный поток ».Помните, что это возвращает массив, таким образом [0].

Одна вещь, которую нужно отметить, заключается в том, что когда вы нажимаете на свой элемент:

<div class="btn-container">
      <a href="URL?assetNo=17232568" class="btn" >Download assets 
      </a>
</div>

в зависимости от того, где именно вы нажимаете{{Click Element}} иногда будет <div> элементом, а иногда <a> внутри него.Это иногда нарушает функциональность ".parentNode", поэтому вам понадобятся некоторые проверки.Ниже я пишу псевдокод (не проверенный и не запутанный):

Пользовательская переменная JavaScript:

function(){
  var parent = {{Click Element}}.parentNode;
  var value = "";
  if(parent.className === "content"){
    value = parent.getElementsByTagName("h4")[0]
  }else{
    value = parent.parentNode.getElementsByTagName("h4")[0]; // you need to go one level above
  }

  return value.innerText;
}
...