ユーザーがフォームを送信しようとしたときに無効であると表示されたフィールドのデータをフィードバックするタグマネージャーにタグがあります。GoogleタグマネージャーDataLayer allways Push
これは、次のコードを使用して行われます。私たちはフィールドのいずれかがクラスinvalid
を持っているかどうかを確認するために、フォームをチェックしている提出する上で基本的には、ここで起こっていただきましたので
// Get user Agent
var Uagent = navigator.userAgent;
// Validation Errors Check
document.getElementById("btnSubmit").onclick = function() {
errorLoop();
}
function errorLoop() {
var runner = document.getElementsByClassName("invalid"),
formEmail = document.getElementById('email').value,
dataL = [];
dataLayer.push({'formEmail' : formEmail});
if (runner) {
for (var i = 0; i < runner.length; i++) {
var errName = runner[i].getAttribute("name"),
errId = runner[i]
.getAttribute("id");
dataL.push("Field: " + errName + " - ID: " + errId);
} //End for
dataL.toString();
var vadout = dataL + " Device: " + Uagent;
console.log(dataL);
dataLayer.push({
'formEmail' : formEmail,
'validationError': vadout,
'event' : 'errorpush'
});
} //End if
} //End errorLoop
を&の場合は、&というフィールドのIDを配列に追加してから、その配列を印刷してデータレイヤーに出力します。
タグ自体は、errorpush
というカスタムイベントを使用してトリガーされます。
問題は、まだ多くの人が検証エラーを取得する時間の約80%に過ぎませんが、検証エラーはデータ層やGoogleアナリティクスには反映されないようです。
私は私が離れて行くとしようとしたが、誰もが右、この問題を引き起こしている可能性がバット何を知っているかどうかを確認したかったのだろうdatalayerプッシュへのsetTimeout遅延を追加することを検討しています。クラス名が「無効」との要素がない場合
私はあなたがコードを誤読している可能性があると思います。 Runnerは、class invalidがページ上にある場合にのみ実行されます。無効なクラスがなければ実行されません。あなたのような誤ったポジティブな点は決してありません。長さを加えても何も変わりません。 P.S.私は実際に、この質問に自分自身が答えていたはずです。私は、データマイヤーがすぐにループがタイムアウトを追加して問題を解決するのを待っているという私の元々の仮定について正しいと思います。 – DCdaz
いいえ私はあなたが私の答えを誤解したと思う、あなたのifステートメントはランナーが存在するかどうかをチェックする。ランナを空の配列として宣言すると(クラス名が "無効"の要素が存在しない場合)、配列は空の配列として存在するため、if文は実行されます。コンソールで確認して、私が正しくないかどうか教えてください。 – Matus
すでにチェックされていると何も影響しません。問題はループが処理を終える前にデータ層がGAに行くことです。私が言ったように既に解決されました。 – DCdaz