Firebug zgłasza błąd "return not in function" bez lokalizacji (no, linia 1 z niczego). Jak mogę znaleźć źródło tego błędu?Zwrot nie w funkcji
return not in function
[Break on this error] return(0)
javascript:return... (line 1)
Używam FireBug 1.05 na FF 2.0.0.20 na Ubuntu.
I znaleziono roztwór które działa (w tej konfiguracji):
var link = document.createElement('a');
link.href='/';
if (childSummary.more) {
link.onclick = capture(function(id) { follow(id); }, childSummary.id);
} else {
link.onclick = capture(function(id) { show(id); }, childSummary.id);
}
link.appendChild(document.createTextNode(name));
div.appendChild(link);
[...]
function capture(fn, val) {
return function() { fn(val); return false; };
}
kod został w pętli, w którym identyfikator zmienia się, co wymaga funkcji przechwytywania.
Dawniej href był "javascript: return 0", a funkcja przechwytywania nie zwracała bezpośrednio false, zamiast tego używała wyniku fn, a była ścieżka, która zwracała odpowiednik wartości true. Href był oceniany powodując błąd.
Określenie href jako "#" lub "spowodowało, że wszystkie linki pojawiły się jako już odwiedzone. Brak definicji href spowodował brak podświetlania linków. To wydawało się najprostsze.
Wygląda jak to. Używam javascript do wygenerowania łącza z funkcją onclick i ustawienia atrybutu href linku. Funkcja onclick zwraca wartość false pod koniec operacji i myślałem, że to uniemożliwi ocenę href. Ponieważ to się zaczęło nie udać, zastanawiam się, czy coś wcześniej w funkcji onclick zachowuje się inaczej. – dougfelt
Czy możemy zobaczyć dokładny kod linku?"Return false" jest w porządku w onclick; zatrzymuje ocenę hrefa. Ale jeśli używasz go w ten sposób, sam href powinien być adresem URL, a nie więcej JS. –
To jest dobre wytłumaczenie, jak używać onclick, aby zapobiec ładowaniu zakotwiczeń: http://www.javascripttoolbox.com/bestpractices/#onclick –