2010-11-02 9 views
6

Używamy zewnętrznego zestawu kontrolnego, który ma globalne wydarzenie JQuery ajaxError, które chcemy dostosować. Nie chcemy aktualizować tego pliku JS, ale chcemy go jakoś przesłonić, aby JQuery nie wykonał tego zdarzenia.Przesłanianie strony trzeciej JS

Czy to możliwe?

EDIT: Kod Third Party

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 zniweczyć linii począwszy od jeśli warunek

+0

Jak to jest wiązane? Czy mógłbyś podać kod, który chcesz unieważnić? – lonesomeday

+0

@lonesomeday - Zobacz edytuj – DotnetDude

Odpowiedz

-1
public class MyClass: MC 

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

Niewłaściwy język programowania. – Quentin

1

Można zastąpić całą metodę, ale nie tylko pojedynczej instrukcji.

EDYTOWANIE: Biblioteka, z której korzystamy, jest zbudowana przy użyciu prototypów. Właśnie zauważyłem, że używasz jQuery. Dlatego możesz użyć jQuery.fn zamiast LibName.prototype. Nadpisanie to będzie wyglądać podobnie do:

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

Jak zastąpić całą metodę w JS i jak obsługiwać wywołanie wyzwalacza? – DotnetDude

+0

Rozumiem, że składnia fn służy do dodawania funkcjonalności do jquery (tworzenie wtyczek). Czy działa to również w przypadku nadpisywania metod jquery? – DotnetDude

+0

jeśli 'ajaxError' jest zdefiniowany w kontekście' fn', powiedzmy jako wtyczka, powinno. próbowałeś tego? – pex

0

można zastąpić dowolną właściwość, jak następuje:

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; 

Przykład pokazuje zachowanie oryginalnych i następnie po wykonaniu nowego kodu. Wracam do pierwotnego stanu.