Как изменить метод класса в неизменяемом js коде? Есть код на сайте. Скрипт подгружается с облака, его изменить возможности нет. Есть html. Его изменить возможности тоже нет. FTP тоже недоступен. Есть одно условие: есть возможность добавить код только после/перед и . В этом скрипте есть класс form и метод submitForm. Как мне переопределить метод submitForm после загрузки скрипта, если у меня есть возможность добавить код только по данному условию?
Сама задача: есть форма на сайте. При нажатии на кнопку отправить срабатывает form.submitForm().
код формы:










Отправить

Код submitForm:submitForm: function(e) {
this.xhr && this.xhr.abort(), this.xhr = $.ajax({
dataType: "json",
contentType: "application/json",
url: "/api/connect/forms/submit",
data: JSON.stringify(this.getFormData()),
method: "POST",
error: function(t) {
e({
status: t.status,
responseJSON: t.responseJSON,
responseText: t.responseText
});
}
}), t.analytics && t.analytics.sendEvent("Form Submit Click");
}
Мне лишь нужно дописать на success:document.location.href = "...";
Данный код работает только в консоли хрома после загрузки страницыform.prototype.submitForm = function { console.log('test') }
form.prototype.submitForm() // test
UPD: проблема в том, что в подгружаемом скрипте создается экземпляр класса, который я изменить не могу. На сайте есть форма, которая при изменении метода в прототипе класса все равно работает по старому методу. Возможно ли вообще такое сделать?

21 Авг 2019 в 07:00
212 +1
0
Ответы
1

К сожалению, если у вас нет доступа к изменению самого скрипта или html, и не имеется возможности изменить экземпляр класса, созданный в скрипте, то изменить метод класса в этом контексте будет невозможно.

Вы можете попробовать использовать обработчики событий на элементах формы (например, на кнопке отправки формы), чтобы выполнить нужные действия после отправки формы. Но это будет работать только в случае, если вы сможете повесить такие обработчики на доступные вам элементы формы.

Если у вас нет возможности изменить код скрипта или html, и изменения в прототипе класса не дают желаемого результата, то, к сожалению, в текущем контексте вам не удастся изменить поведение метода submitForm.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 648 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир