mixpanel和asp.net按钮

mixpanel和asp.net按钮,asp.net,mixpanel,Asp.net,Mixpanel,我不得不在一个好的旧asp.net页面上添加一些mixpanel跟踪,这将变成一场噩梦。我有这个按钮: <asp:Button ID="idConfirmAndSubmitButton" name="confirmAndSubmitButton" Text="Confirm and Submit" OnClick="SaveAndPublishClick" runat="server" /> 只有validateFields返回false时,才会在mixpanel上跟踪事件 我已经

我不得不在一个好的旧asp.net页面上添加一些mixpanel跟踪,这将变成一场噩梦。我有这个按钮:

<asp:Button ID="idConfirmAndSubmitButton" name="confirmAndSubmitButton" Text="Confirm and Submit" OnClick="SaveAndPublishClick" runat="server" />
只有validateFields返回false时,才会在mixpanel上跟踪事件

我已经设法简单地重现了这个问题:

这将正确跟踪:

idConfirmAndSubmitButton.OnClientClick = "mixpanel.track('track me'); return false";
这并不是:

idConfirmAndSubmitButton.OnClientClick = "mixpanel.track('track me'); return true";
如果validateFields返回true,那么表单将提交,页面将更改,并且mixpanel代码没有机会触发。mixpanel支持建议我添加一个300毫秒的小延迟,以便在提交表单之前触发跟踪代码。下面是我最终得到的代码,它似乎是有效的:

<input type="submit" name="ctl00$phMainBody$idConfirmAndSubmitButton" value="Confirm and Submit"
onclick="if(delayPostback(this,validateFields(['ctl00_phMainBody_idProfileForm']))){ console.log('stopping the postback'); return false;};" 
id="ctl00_phMainBody_idConfirmAndSubmitButton">

<script type="text/javascript">
    var postbackDelayed = false;
    function delayPostback(e, validated) {
        if (postbackDelayed) {
            postbackDelayed = false;
            return !validated;
        } else {
            postbackDelayed = true;
        }
        console.log('tracking');
        mixpanel.track('Minimum Required Fields - confirm and submit clicked');
        window.setTimeout(function () {
            console.log("clicking again");
            e.click();
        }, 300);
          console.log("returning true");
          return true;
      }
</script>
一些代码改编自

<input type="submit" name="ctl00$phMainBody$idConfirmAndSubmitButton" value="Confirm and Submit"
onclick="if(delayPostback(this,validateFields(['ctl00_phMainBody_idProfileForm']))){ console.log('stopping the postback'); return false;};" 
id="ctl00_phMainBody_idConfirmAndSubmitButton">

<script type="text/javascript">
    var postbackDelayed = false;
    function delayPostback(e, validated) {
        if (postbackDelayed) {
            postbackDelayed = false;
            return !validated;
        } else {
            postbackDelayed = true;
        }
        console.log('tracking');
        mixpanel.track('Minimum Required Fields - confirm and submit clicked');
        window.setTimeout(function () {
            console.log("clicking again");
            e.click();
        }, 300);
          console.log("returning true");
          return true;
      }
</script>