2016-10-13 8 views
1

Googleタグマネージャーでは、cssセレクターの一致に基づいてトリガーをトリガーすることができます。 html要素はCSSセレクタに一致する場合、トリガがトリガされます(ここでは利用可能詳細:http://www.simoahava.com/analytics/matches-css-selector-operator-in-gtm-triggers/トリガー定義内で使用する親ノードの要素IDを取得する方法

現在、私は、トリガがトリガされるべきかどうかを確認するために一致する次のCSSセレクタを使用します。

div#admin-button-id, div#admin-button-id * 

カンマの前の最初の部分は、1つの可能性を示します。これは、すべてのdiv要素をid admin-button-idと一致させます。 2番目の可能性(コンマの後ろ)は、id要素がadmin-button-idであるdiv要素の子であるすべてのhtml要素に一致します。これは動作しますが、私はdiv#admin-button-idを複製する必要のないバージョンを好むでしょう。したがって、子どもがオプションであることを示すために、

div#admin-button-id *? 

のようなものがあります。そのような有効な構成がありますか? @nyenからの提案に基づき

+0

例をさらに展開できますか? –

+0

@ShannonYoung私の問題についての詳細を追加しました。 –

+0

IDの価値については、IDは固有の傾向があります。 Googleタグマネージャの仕組みはわかりませんが、それでもまだユニークであると確信しています。 –

答えて

1

私は、次の解決策を思い付いた:私は、次のマークアップコード(ommited不要なCSSクラス)に対処する必要が

<div id="admin-button-id"> 
    <span> 
     <span>Administration</span> 
    </span> 
</div> 

クリックすることが可能ですこのボタンのさまざまな部分で、最も内側のスパン、中間のスパンまたは外側のdivのいずれかです。しかし、外側のdivだけが私のGTMトリガーで一致させるために使用できるIDを含んでいます。 GTMでは、 'Custom JavaScript'というタイプの 'calculatedClickId'というユーザー定義変数を作成しました。 (outherのDIVに最も内側スパン)から外向きに、DOMツリー内のIDのカスタム機能を検索:

function() { 
    if ({{Click Element}}.id != "") { 
    return {{Click Element}}.id; 
    } 
    if ({{Click Element}}.parentNode.id != "") { 
    return {{Click Element}}.parentNode.id; 
    } 
    return {{Click Element}}.parentNode.parentNode.id; 
} 

{{Click Element}}がGTMによって提供されるHTML要素です。だから、私のhtml要素内でクリックが発生する場所は関係ありません。変数は常に外側のdivのidに設定されています。

これは私は簡単に私のトリガー設定の中に変数calculatedClickIdを使用することができます:

enter image description here

私はjavascriptのメソッドカスタム(まだ)防弾ではなく、さらに洗練されるかもしれないことを承知しているが、これを解決策はcssセレクタメソッドを上回る改良です。

関連する問題