uncaught RangeError: Превышен максимальный размер стека вызовов при использовании пикселя Facebook

В моем приложении Laravel я использую пиксель Facebook для отслеживания. Одним из таких показателей отслеживания является отправка формы.

$("#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 Переданный в представление имеет определенный идентификатор, затем отправьте запрос в аналитику Facebook Pixel, а затем отправьте форму.

Вместо этого я получаю следующую ошибку:

uncaught RangeError: превышен максимальный размер стека вызовов

1

Решение

Проблема в том, что вы создаете бесконечную рекурсию, поднимая 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
}
});
1

Другие решения

Других решений пока нет …