Как изменить метод класса в неизменяемом 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
243 +1
0
Ответы
1

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

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

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

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