1

イベントの追跡を実践するには、サブスクリプション エンドポイントへの 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)
                    }

助けてくれてどうもありがとう

4

1 に答える 1