压倒第三方JS

时间:2010-11-02 20:10:14

标签: javascript jquery

我们使用第三方控件套件,它具有我们想要自定义的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 个答案:

答案 0 :(得分:1)

您可以覆盖整个方法,但不能只覆盖一个语句。

修改我正在使用的库是使用原型构建的。注意到你正在使用jQuery。因此,您可以使用jQuery.fn而不是LibName.prototype。覆盖它看起来类似于:

jQuery.fn.ajaxError = function(element, eventName, xhr, status) {
  var prevented = this.trigger(element, eventName,
  {
    XMLHttpRequest: xhr,
    textStatus: status
  });
}

答案 1 :(得分:0)

您可以覆盖以下任何属性:

    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;

该示例显示保留原始文件,然后执行新代码。我把它恢复到原始状态。

答案 2 :(得分:-1)

public class MyClass: MC

{
  protected override void OnError(..)
  {
     //handle error, send error to where ever
  }
}