Cześć,
Nie znalazłem takiej informacji w internetach więc będę pytać tutaj. Wiem, że break; w javascript umożliwia opuszczenie nazwanego bloku, co byłoby dla mnie zbawieniem gdyż tworzę skrypt pod GreaseMonkeya (Jquery), który przy otrzymaniu określonej odpowiedzi od serwera powinien zakończyć działanie. Niestety nie działa wywołanie wyjątku (throw new Error()), więc pomyślałem o tym. Niestety wpisanie break labelName; powoduje, że skrypt w ogóle nie działa (błąd składniowy). Coś w tym stylu (w dużym uproszczeniu):
function funkcja1(i, z) {
labelName: {
var l = location.protocol + '//' + location.host + ((location.port)?':'+location.port:'') + '/script1.php?id=' + i;
$.post(l, 'arguments_here').done(function(r){
// parsowanie odpowiedzi i jakieś warunki ble ble
(...)
else {
// gdy otrzymamy spodziewaną odpowiedź
$.post(l, 'new_arguments_here').done(function(r){
// parsowanie odpowiedzi i jakies warunki
else if (something) {
//całkowite zakończenie funkcji
break labelName;
}
};
}
// coś tutaj
setTimeout(function(){funkcja1(++i, z)},500);
});
}
}
I tu pytanie: Powyższe nie działa bo nie można opuścić w ten sposób funkcji, czy po prostu coś źle robię.
Zamiast $.post oczywiście używam GM_xmlhttpRequest, ale nie z uwagi na cross domain, lecz na własciwość finalUrl. Nie mam pomysłu jak to obejść.