Переопределение стороннего 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
  }
}
Другие вопросы по тегам