uncaught RangeError: Maximum call stack size exceeded when using Facebook Pixel

uncaught RangeError: Maximum call stack size exceeded when using Facebook Pixel

在我的 Laravel 应用程序中,我使用 Facebook Pixel 进行一些跟踪。一种这样的跟踪指标是表单提交。

$("#emailConfirmation").on("submit", function(e) {
  var eventId = {{ $event->id }};

  if (eventId === 87 || eventId === 88 || eventId === 89) {
    e.preventDefault();

    fbq('track', 'Lead', {
      content_name: 'Email confirmation',
      content_category: 'Form submission'
    });

    $("#emailConfirmation").submit();
  }
});

这样做的目的是,如果传递给视图的 $event 具有特定 ID,则阻止提交表单,然后将潜在客户发送到 Facebook Pixel 分析,然后提交表单。

相反,我收到以下错误:

uncaught RangeError: Maximum call stack size exceeded

问题是因为您通过在 submit 事件处理程序中引发 submit 事件来创建无限递归。

要解决此问题,请引发本机 form 元素的提交事件,而不是 jQuery 对象:

$("#emailConfirmation").on("submit", function(e) {
  var eventId = {{ $event -> id}};
  if (eventId === 87 || eventId === 88 || eventId === 89) {
    e.preventDefault();

    fbq('track', 'Lead', {
      content_name: 'Email confirmation',
      content_category: 'Form submission'
    });

    this.submit(); // change here
  }
});