Wiele razy widziałem takie linki na stronach HTML:
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
Jaki jest tam efekt return false
?
Poza tym zwykle nie widzę tego w przyciskach.
Czy jest to określone gdziekolwiek? W niektórych specyfikacjach w3.org?
javascript
html
Leonel
źródło
źródło
Odpowiedzi:
Wartość zwracana przez moduł obsługi zdarzeń określa, czy powinno również zachodzić domyślne zachowanie przeglądarki. W przypadku klikania linków byłoby to podążanie za linkiem, ale różnica jest najbardziej zauważalna w procedurach obsługi przesyłania formularzy, w których można anulować przesłanie formularza, jeśli użytkownik popełnił błąd podczas wprowadzania informacji.
Nie wierzę, że istnieje specyfikacja W3C. Wszystkie starożytne interfejsy JavaScript, takie jak ten, otrzymały pseudonim „DOM 0” i są w większości nieokreślone. Możesz mieć trochę szczęścia, czytając starą dokumentację Netscape 2.
Współczesnym sposobem osiągnięcia tego efektu jest wywołanie
event.preventDefault()
, a jest to określone w specyfikacji zdarzeń DOM 2 .źródło
event.preventDefault ? event.preventDefault() : event.returnValue = false;
będzie działać również w IEreturn false
metodą, ale potrzebowałemevent.preventDefault
Chrome.return false
teraz z tą metodą. Przestaje podążać za linkiem w zdarzeniu onclick elementu img.Różnicę możesz zobaczyć w następującym przykładzie:
Kliknięcie przycisku „OK” zwraca wartość true i następuje przejście do linku. Kliknięcie „Anuluj” zwraca wartość false i nie powoduje kliknięcia linku. Jeśli javascript jest wyłączony, link jest podążany normalnie.
źródło
<button type="submit" onclick="return confirm('Do you really want to delete this?');">Delete</button>
Oto bardziej niezawodna procedura anulowania domyślnego zachowania i propagacji zdarzeń we wszystkich przeglądarkach:
Przykład zastosowania tego w procedurze obsługi zdarzeń:
źródło
return false;
? Odpowiedź Kamesha dotyczy tego trochę, ale skoro istnieje szansa, że twój shim zrobi jedno lub drugie, w jaki sposób te oddzielne wyniki spowodujątabstripLinkElement_click
zmianę operacji z przeglądarki na przeglądarkę? Jeśli nie ma różnicy operacyjnej, dlaczego (w praktyce) przeszkadza (nawet jeśli teoretycznie jest to właściwa rzecz)? Dzięki i AIA za zombie odpowiedź na pytanie.else
. Okropny styl kodowania. Dodaj kilka nawiasów klamrowych, aby nie było dwuznaczne.CO NAPRAWDĘ ROBI „zwrot fałszywy” ?
return false faktycznie robi trzy bardzo różne rzeczy, gdy go nazwiesz:
Aby uzyskać więcej informacji, zobacz jquery-events-stop-misusing-return-false .
Na przykład :
kliknięcie tego linku powoduje zwrócenie wartości false, aby anulować domyślne zachowanie przeglądarki .
źródło
e.preventDefault()
), Ale nie zatrzymują propagacji. Patrz: jsfiddle.net/18yq1783Ponowne ustawienie fałszywego zdarzenia JavaScript zwykle anuluje zachowanie „domyślne” - w przypadku linków informuje przeglądarkę, aby nie podążała za linkiem.
źródło
Uważam, że powoduje to, że standardowe zdarzenie się nie wydarzy.
W twoim przykładzie przeglądarka nie będzie próbowała przejść do #.
źródło
Zwróć false, aby zatrzymać śledzenie hiperłącza po uruchomieniu javascript. Jest to przydatne w przypadku dyskretnego javascript, który degraduje się z wdziękiem - na przykład możesz mieć miniaturę, która używa javascript do otwierania wyskakującego obrazu w pełnym rozmiarze. Gdy javascript jest wyłączony lub obraz jest klikany środkowym przyciskiem (otwierany w nowej karcie), ignoruje to zdarzenie onClick i po prostu otwiera obraz jako pełnowymiarowy obraz.
Jeśli nie podano return false, obraz uruchomi wyskakujące okienko i otworzy obraz normalnie. Niektóre osoby zamiast używać zwracanej wartości false używają javascript jako atrybutu href, ale to oznacza, że gdy javascript jest wyłączony, link nic nie robi.
źródło
użycie return false w zdarzeniu onclick powoduje, że przeglądarka nie przetwarza reszty stosu wykonania, co obejmuje śledzenie łącza w atrybucie href.
Innymi słowy, dodanie wartości false powoduje, że href nie działa. W twoim przykładzie jest to dokładnie to, czego chcesz.
W przyciskach nie jest to konieczne, ponieważ onclick to wszystko, co kiedykolwiek wykona - nie ma hrefu do przetworzenia i przejścia do.
źródło
Zwracana wartość false oznacza, że nie należy podejmować domyślnej akcji, która w przypadku an
<a href>
oznacza podążanie za linkiem. Gdy zwrócisz false do kliknięcia, href zostanie zignorowany.źródło
Włamanie do przeglądarki: http://jszen.blogspot.com/2007/03/return-false-to-prevent-jumping.html
źródło
Zwróć false uniemożliwi nawigację. W przeciwnym razie lokalizacja stałaby się wartością zwracaną someFunc
źródło
W
return false
zapobiega strony przed nawigacji i niepożądany przewijanie okna do góry lub na dół.źródło
Dziwię się, że nikt nie wspomniał
onmousedown
zamiastonclick
. Theonclick='return false'
nie wychwytuje domyślnego zachowania przeglądarki, co powoduje (czasem niechciane) zaznaczanie tekstu,
mousedown
aleonmousedown='return false'
robi.
Innymi słowy, kiedy klikam przycisk, jego tekst czasami zostaje przypadkowo wybrany, zmieniając wygląd przycisku, co może być niepożądane. To jest domyślne zachowanie, któremu tutaj próbujemy zapobiec. Jednak
mousedown
zdarzenie jest rejestrowane wcześniejclick
, więc jeśli tylko zapobiegniesz temu zachowaniu wclick
module obsługi, nie wpłynie to na niechciany wybór wynikający zemousedown
zdarzenia. Tak więc tekst jest nadal zaznaczany. Jednak zapobieganie domyślnemu ustawieniumousedown
zdarzeniu wykona zadanie.Zobacz także event.preventDefault () vs. return false
źródło
Mam ten link na mojej stronie HTML:
Funkcja setBodyHtml () jest zdefiniowana jako:
Po kliknięciu linku link znika, a tekst wyświetlany w przeglądarce zmienia się na „nową treść”.
Ale jeśli usunę „fałsz” z mojego linku, kliknięcie linku (pozornie) nic nie robi. Dlaczego?
Dzieje się tak dlatego, że jeśli nie zwrócę wartości false, domyślne zachowanie kliknięcia łącza i wyświetlenia strony docelowej nie zostanie anulowane. ALE tutaj href hiperłącza to „”, więc łączy się z powrotem z tą samą stroną. Tak więc strona jest właśnie odświeżana i na pozór nic się nie dzieje.
W tle nadal działa funkcja setBodyHtml (). Przypisuje swój argument do body.innerHTML. Ponieważ jednak strona jest natychmiast odświeżana / ponownie ładowana, zmodyfikowana treść nie jest widoczna dłużej niż przez kilka milisekund, więc jej nie zobaczę.
Ten przykład pokazuje, dlaczego czasami użyteczne jest użycie „return false”.
Chcę przypisać NIEKTÓRE href do linku, aby wyświetlał się jako link, jak podkreślony tekst. Ale nie chcę, aby kliknięcie linku skutecznie po prostu ponownie ładowało stronę. Chcę, aby ta domyślna nawigacja = zachowanie została anulowana, a wszelkie skutki uboczne są wywoływane przez wywołanie mojej funkcji w celu włączenia i pozostania w mocy. Dlatego muszę „zwrócić fałsz”.
Powyższy przykład to coś, co szybko wypróbujesz podczas programowania. W przypadku produkcji bardziej prawdopodobne jest przypisanie modułu obsługi kliknięć w JavaScript i wywołanie metody preventDefault (). Ale w przypadku szybkiego wypróbowania powyższe „powrót fałszu” załatwia sprawę.
źródło
Podczas korzystania z formularzy możemy użyć opcji „return false”, aby zapobiec przesłaniu.
źródło