簡體   English   中英

壓倒第三方JS

[英]Overriding third party 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條件開始使行無效

您可以覆蓋整個方法,但不能只覆蓋一個語句。

編輯 我猜你正在使用的庫是使用原型構建的。 剛剛注意到你正在使用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
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM