2

グローバルJavaScript変数の値に基づいてGoogleタグマネージャイベントをトリガーする方法を理解しようとしています。 Googleタグマネージャの[トリガー]ビューでは、グローバルJavaScript変数がある値に等しいときにトリガーを設定できます。しかし、何らかの理由で、このトリガーは決して発火しません。グローバルJavaScript変数が値と等しい場合にGoogleタグマネージャイベントを発生させる方法

すべての変更を加えた後、現在プレビューしています(プレビューをもう一度クリックしています)が、何らかの理由でGTMがトリガーを発していません。

「JavaScript変数」タイプとグローバル変数名「screenerStep」を持つカスタム変数「Screener Step」を作成しました。 「スクリーナステップ」が「1」のときにトリガが設定されます。デフォルトでは0に設定されています。

私はそうのように、それを定義することで、グローバル変数として「screenerStep」を宣言した:

window.screenerStep = 0

私はscreenerStepが、実際に私がscreenerStepの値を設定するAngularJSを使用しています、コンソールでscreenerStepを入力し、それが重要な場合は、1

に等しいことを確認することによって1にセットされますないことを確認することができます$watchの範囲内にあります。

ありがとうございます。 screenerStepがトリガ条件である1に初期化されても、トリガは起動しません。 この問題は、トリガーが実際にはscreenerStep1に等しいときにトリガーするだけのフィルターを持つカスタムイベントであったためです。 document.dispatchEvent(new CustomEvent('testEvent'));経由でイベントを放送した後、トリガーは発砲しました。私はいくつかの事をもう一度考えたら、正式な解決策を投稿します。

答えて

0

あなたはGTMはJavaScript変数の値に基づいてトリガする場合は、以下の操作を行う必要があります。

まず、この読み取り:カスタムイベントをディスパッチするdataLayerを使用するとhttps://developers.google.com/tag-manager/devguide

を:

window.dataLayer.push(
    {'event': 'Your Custom Event'} 
); 

注:dataLayerは、コードのどこかで空の配列として最初に初期化する必要があります。 dataLayerをページの読み込みで利用できるようにするには、GTMコンテナを実行する前にdataLayerが存在する必要があります。

私の目的(イベント)のために、私はちょうどdataLayerを私の非同期ロードされたjavascriptの中で初期化しました。

グローバルJavaScript変数が特定の値に等しい場合にのみ、GTMトリガーをフィルタリングして起動できます。明確にするには、カスタムイベントをディスパッチして、グローバルJavaScript変数の値を確認するようにGTMに指示する必要があります。グローバルJavaScript変数はGTMで変数 - > JavaScript変数 - >グローバルJavaScript変数の名前を入力すると設定されます。

ここで、GTMタグをトリガーするさまざまな条件に対して異なるイベント名を使用するほうが良いかもしれないと考えているかもしれません。これは私が最終的に選んだパスなので、グローバルなJavaScript変数はまったく必要ありません。しかし、場合によっては、JavaScriptから値を取り込むことが有用な場合もあります。これらのケースでは、我々はそのように私たちのカスタムイベントにデータを追加することができます:あなたはまた、単に直接dataLayerに変数をプッシュすることができ

window.dataLayer.push(
    {'event': 'Custom Event'}, 
    {'attributes': { 
    {'custom attribute 1': variableHere}, 
    {'custom attribute 2': anotherVariableHere}, 
    ... 
    } 
); 

window.dataLayer.push(
    {'custom variable 1': variableHere} 
); 
関連する問題