I zdefiniować następujące MyClass
i jego metod w skrypcie użytkownika:Wywołuje metodę javascript obiektu od wewnątrz wywołania zwrotnego
function MyClass() {
this.myCallback = function() {
alert("MyClass.myCallback()");
};
this.startRequest = function() {
GM_xmlhttpRequest({
'method': 'GET',
'url': "http://www.google.com/",
'onload': function (xhr) {
myClassInstance.myCallback();
}
});
};
}
var myClassInstance = new MyClass();
myClassInstance.startRequest();
Ten skrypt działa i metoda myCallback()
jest wywoływana raz na GM_xmlhttpRequest uzupełnia.
Jednak działa tylko dlatego, że wywołanie zwrotne onload
odnosi się do globalnej zmiennej myClassInstance
. Gdybym zaktualizować onload
oddzwanianie do:
'onload': function (xhr) {
this.myCallback();
}
Następnie pojawia się (chrom) błąd:
Uncaught TypeError: Object [object DOMWindow] has no method 'myCallback'.
Wydaje this
jest oceniana w niewłaściwym kontekście.
Czy istnieje sposób wywołania metody myCallback()
z myClassInstance
bez konieczności uciekania się do używania zmiennej globalnej?
+1 pobili mnie do tego. – JAAulde
+1 Właśnie skończyłem moją godzinę sesji head slamming. Dziękuję Ci. :) – Anthony