2014-10-18 2 views
1

Я нашел этот макро-скрипт менеджера тегов Google (http://viget.com/advance/gtm#elementclass), чтобы определить, имеет ли родитель элемента определенное значение класса.Родительский класс в Диспетчере тегов Google

function crawlByClassName() { 
var el = {{element}}; 

while (el && el !== document.body && el.className !== 'INSERT CLASS NAME') { 
    el = el.parentElement; 
} 

return el.className === 'INSERT CLASS NAME'; 
} 

Есть ли способ изменить его, чтобы записать значение, а затем использовать правило для указания имени? Или есть другой способ добиться этого?

ответ

0

Спасибо @kevintechie. Ваш метод может работать.

Я был в состоянии найти другой способ здесь https://plus.google.com/100582165749296472339/posts/fa6iKeuF6ig

я могу использовать это как макрос:

function() { 
return {{element}}.parentElement.className; 
} 

Затем укажите имя класса в правиле. Это означает, что есть только один макрос, а не один для каждого класса.

+0

Имейте в виду разницу между этими двумя макросами: макрос в OP будет искать все родительские элементы для имени класса. Этот макрос просто возвращает имя класса непосредственного родителя, только если он существует. – kevintechie

0

Вы не можете использовать правило, чтобы указать имя родительского класса для поиска, но вы можете использовать макрос.

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

function crawlByClassName() { 
 
    var el = {{element}}; 
 
    
 
    while (el && el !== document.body && el.className !== '{{parent class}}') { 
 
     el = el.parentElement; 
 
    } 
 
    
 
    return el.className === '{{parent class}}';

Тогда вы могли бы создайте макрос с именем «родительский класс» и установите значение для имени класса, которое вы хотите найти. Если вы хотите установить имя родительского класса на основе разных условий, вы можете использовать тип макроса Lookup Table.

Смежные вопросы