イベントの追跡を実践するには、サブスクリプション エンドポイントへの JSON 要求にさまざまなフィールドを統合する必要があります。3 つのフィールドは次のとおりです。
- "deviceType": (文字列) "モバイル"、"タブレット" または "デスクトップ"</li>
- 「userAgent」: (文字列) navigator.userAgent の直接の値
- “sourceForm”: (文字列) “top” または “bottom” (ページの上部と下部に、同じアクションを登録するための 2 つの異なるボタンがあります)
コードは次のとおりです。
function bindSubscriptionButton(btnId, nameId, emailId, nameErrorId, emailErrorId) {
var button = document.getElementById(btnId);
if (button) {
button.addEventListener("click", function (e) {
hideErrors();
var name = document.getElementById(nameId).value;
var email = document.getElementById(emailId).value;
var nameError = document.getElementById(nameErrorId);
var emailError = document.getElementById(emailErrorId);
if (!name) {
nameError.innerHTML = "Name ist erforderlich";
nameError.hidden = false;
}
if (!email) {
emailError.innerHTML = "E-Mail is required";
emailError.hidden = false;
} else if (!isEmailValid(email)) {
emailError.innerHTML = "E-Mail is not valid";
emailError.hidden = false;
}
if (name && email && isEmailValid(email)) {
hideErrors();
sendDataToServer(name, email, undefined)
}
}, false);
}
}
bindSubscriptionButton("subscriptionButton", "nameInput", "emailInput", "nameInputError", "emailInputError");
bindSubscriptionButton("subscriptionButton2", "nameInput2", "emailInput2", "nameInputError2", "emailInputError2");
}
function sendDataToServer(name, email, referralCode) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var response = this.response ? JSON.parse(this.response) : null;
goToSuccessPage();
}
};
var data = {
email: email,
firstName: name,
lang: "en",
};
xhttp.open("POST", serverURL, true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(JSON.stringify(data));
}
このオブジェクトに deviceType、userAgent、および sourceForm を追加したいと思います。
var data = {
email: email,
firstName: name,
lang: "en",
};
deviceType については、次の関数も渡す必要があります。
const deviceType = () => {
const ua = navigator.userAgent;
if (/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(ua)) {
return "tablet";
}
else if (/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(ua)) {
return "mobile";
}
return "desktop";
};
sourceForm の場合、ここで「source」に追加の引数を渡す必要があります。
bindSubscriptionButton("subscriptionButton", "nameInput", "emailInput", "nameInputError", "emailInputError");
bindSubscriptionButton("subscriptionButton2", "nameInput2", "emailInput2", "nameInputError2", "emailInputError2");
ここまでずっと通過させます:
if (name && email && isEmailValid(email)) {
hideErrors();
sendDataToServer(name, email, undefined)
}
助けてくれてどうもありがとう