ユーザーがグーグルクロームの自動入力オプションでフォームに入力したかどうかを検出する方法について誰かが私を導くことができれば。
ユーザーがフィールドに入力してぼかしを変更するたびに、イベントをGoogleアナリティクスに送信するディレクティブがあります。
ただし、ユーザーがChromeの自動入力オプションを使用してフォームに入力したかどうかを検出し、各フィールドのデータをGoogleアナリティクスにプッシュする必要もあります。
私の指令の一部:
element.bind('blur', function (e) {
if ((e.target.value !== 0) && typeof value !== 'undefined') {
if (_.has(ga_data, 'sendEvent')) {
analyticsService.sendEvent(ga_data.sendEvent);
}
if (_.has(ga_data, 'action') && ga_data.action === 'blur') {
analyticsService.sendEvent(ga_data);
}
}
});
input-directive srcに基づいて、angularは変更、入力、貼り付けなどの場合のリスナーを設定します。
また、ブラウザが入力要素を自動入力するたびに、このリスナーが呼び出され、ここngModelディレクティブsrcの時点で$ parsersの配列を介してviewValueがコミットされます。
したがって、最終的には、追加のscope。$ watchを回避し、$ parserに依存して、各入力要素のフェーズをディレクティブにリンクするだけでgatrackイベントを送信できます。また、最初に使用した直後(つまり、ブラウザーの自動入力)にパーサー関数を破棄することを忘れないでください。これにより、viewValueの変更時にスパムが発生することはありません。
次に例を示します。
angular
.module('app', [])
.directive('detectPrefill', function() {
return {
require: 'ngModel',
link: {
pre: function(scope, element, attrs, ctrl) {
function detectPrefill (viewValue) {
//send GA data
//...
// just checking that detectPrefill func is destroyed after first usage
viewValue && console.log(viewValue);
ctrl.$parsers.splice(
ctrl.$parsers.indexOf(detectPrefill),
1
);
return viewValue;
}
ctrl.$parsers.push(detectPrefill);
}
}
};
});
お役に立てれば。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加