2010-11-02 25 views
6

Utilizziamo una suite di controllo di terze parti che ha un evento JQuery globale ajaxError che desideriamo personalizzare. Non vogliamo aggiornare questo file JS ma vogliamo in qualche modo sovrascriverlo in modo che JQuery non esegua questo evento.Override di terze parti JS

È possibile?

EDIT: Codice di Terze parti

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.'); 
     } 
    } 

ho wan per annullare la linea a partire dalla condizione di se

+0

Come è associato? Potresti dare il codice che vuoi annullare? – lonesomeday

+0

@lonesomeday - Vedi modifica – DotnetDude

risposta

-1
public class MyClass: MC 

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

Linguaggio di programmazione errato. – Quentin

1

Si potrebbe sovrascrivere l'intero metodo, ma non solo una singola istruzione.

EDIT: La biblioteca si sta utilizzando è costruito utilizzando prototipi credo. Hai appena notato che stai usando jQuery. Quindi potresti usare jQuery.fn invece di LibName.prototype. Sovrascrivendo sarebbe simile a:

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

Come sovrascrivere l'intero metodo in JS e come gestirò la chiamata trigger? – DotnetDude

+0

La mia comprensione è che la sintassi fn viene utilizzata per aggiungere funzionalità a jquery (creando plugin). Funziona anche per sovrascrivere i metodi jQuery? – DotnetDude

+0

se 'ajaxError' è definito nel contesto di' fn', diciamo come plugin, dovrebbe. Hai provato? – pex

0

È possibile ignorare qualsiasi proprietà come segue:

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; 

L'esempio mostra il mantenimento di originale e quindi dopo l'esecuzione del nuovo codice. Lo restituisco allo stato originale.

Problemi correlati