2010-11-02 6 views
6

Utilizamos un paquete de control de terceros que tiene un evento global JQuery ajaxError que nos gustaría personalizar. No queremos actualizar este archivo JS pero queremos anularlo de alguna manera para que JQuery no ejecute este evento.Tercero predominante JS

¿Esto es posible?

EDIT: Código de Terceros

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

I wan para anular la línea a partir de la condición if

+0

¿Cómo está ligado? ¿Podría dar el código que desea anular? – lonesomeday

+0

@lonesomeday - Consulte edición – DotnetDude

Respuesta

-1
public class MyClass: MC 

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

Lenguaje de programación incorrecto. – Quentin

1

Se podría sobrescribir todo el método, pero no sólo una única instrucción.

EDITAR: La biblioteca está utilizando está construido usando prototipos, supongo. Acaba de darse cuenta de que está utilizando jQuery. Por lo tanto, puede usar jQuery.fn en lugar de LibName.prototype. Sobreescribiéndolo tendría un aspecto similar a:

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

¿Cómo anulo todo el método en JS y cómo manejaré la llamada de activación? – DotnetDude

+0

Según tengo entendido, la sintaxis fn se usa para agregar funcionalidad a jquery (creación de complementos). ¿Esto funciona para anular los métodos de jquery también? – DotnetDude

+0

si 'ajaxError' se define en el contexto de' fn', por ejemplo, como un complemento, debería. ¿Lo intentaste? – pex

0

Puede anular cualquier propiedad de la siguiente manera:

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; 

El ejemplo muestra la retención del original y luego después de la ejecución del nuevo código. Lo devuelvo al estado original.

Cuestiones relacionadas