Переопределение стороннего JS
Мы используем сторонний пакет управления, который имеет глобальный JQuery ajaxError
событие, которое мы хотели бы настроить. Мы не хотим обновлять этот файл JS, но хотим как-то переопределить его, чтобы JQuery не выполнял это событие.
Это возможно?
РЕДАКТИРОВАТЬ: код третьей стороны
ajaxError: function (element, eventName, xhr, status) {
var prevented = this.trigger(element, eventName,
{
XMLHttpRequest: xhr,
textStatus: status
});
if (!prevented) {
if (status == 'error' && xhr.status != '0')
alert('Error! The requested URL returned ' + xhr.status + ' - ' + xhr.statusText);
if (status == 'timeout')
alert('Error! Server timeout.');
}
}
Я хочу обнулить строку, начиная с условия if
3 ответа
Вы можете перезаписать весь метод, но не только один оператор.
РЕДАКТИРОВАТЬ:библиотека, которую вы используете, построена с использованием прототипов, я думаю. Просто заметил, что вы используете JQuery. Поэтому вы можете использовать jQuery.fn вместо LibName.prototype. Перезапись это будет выглядеть примерно так:
jQuery.fn.ajaxError = function(element, eventName, xhr, status) {
var prevented = this.trigger(element, eventName,
{
XMLHttpRequest: xhr,
textStatus: status
});
}
Вы можете переопределить любое свойство следующим образом:
var thirdParty = {
override: function() {
alert('this function should have been overridden');
}
};
var thirdPartyOriginal = thirdParty.override;
thirdParty.override = function() {
alert('this function has been overridden');
};
thirdParty.override();
thirdParty.override = thirdPartyOriginal;
В примере показано сохранение оригинала, а затем после выполнения нового кода. Я возвращаю его обратно в исходное состояние.
public class MyClass: MC
{
protected override void OnError(..)
{
//handle error, send error to where ever
}
}