Sering kali saya melihat tautan seperti ini di halaman HTML:
<a href='#' onclick='someFunc(3.1415926); return false;'>Click here !</a>
Apa efek return false
di sana?
Juga, saya biasanya tidak melihat itu di tombol.
Apakah ini ditentukan di mana saja? Dalam beberapa spec di w3.org?
javascript
html
Leonel
sumber
sumber
Jawaban:
Nilai kembalinya event handler menentukan apakah perilaku browser default juga harus terjadi. Dalam hal mengklik tautan, ini akan mengikuti tautan, tetapi perbedaannya paling terlihat pada formulir yang menangani penangan, di mana Anda dapat membatalkan pengiriman formulir jika pengguna melakukan kesalahan dalam memasukkan informasi.
Saya tidak percaya ada spesifikasi W3C untuk ini. Semua antarmuka JavaScript kuno seperti ini telah diberi julukan "DOM 0", dan sebagian besar tidak ditentukan. Anda mungkin beruntung membaca dokumentasi Netscape 2 lama.
Cara modern untuk mencapai efek ini adalah dengan menelepon
event.preventDefault()
, dan ini ditentukan dalam spesifikasi DOM 2 Acara .sumber
event.preventDefault ? event.preventDefault() : event.returnValue = false;
akan bekerja di IE jugareturn false
metode ini, tetapi saya perluevent.preventDefault
untuk Chrome.return false
metode sekarang. Itu berhenti mengikuti tautan dalam peristiwa onclick elemen img.Anda dapat melihat perbedaannya dengan contoh berikut:
Mengklik "Oke" mengembalikan true, dan tautannya diikuti. Mengklik "Batal" menghasilkan false dan tidak mengikuti tautan. Jika javascript dinonaktifkan, tautan diikuti secara normal.
sumber
<button type="submit" onclick="return confirm('Do you really want to delete this?');">Delete</button>
Berikut ini adalah rutinitas yang lebih kuat untuk membatalkan perilaku default dan peristiwa yang muncul di semua browser:
Contoh bagaimana ini akan digunakan dalam event handler:
sumber
return false;
? Jawaban kamesh berkaitan dengan ini sedikit, tetapi karena ada kemungkinan shim Anda melakukan satu atau yang lain, bagaimana hasil yang terpisah akan melakukantabstripLinkElement_click
operasi perubahan dari browser ke browser? Jika tidak ada perbedaan operasional, mengapa (dalam praktiknya) repot (walaupun, secara teori, ini adalah Hal yang Benar untuk dilakukan)? Terima kasih, dan AIA untuk pertanyaan jawaban zombie.else
. Gaya pengkodean yang mengerikan. Tambahkan beberapa kurung kurawal agar tidak ambigu.APA "return false" YANG BENAR-BENAR MELAKUKAN?
return false sebenarnya melakukan tiga hal yang sangat terpisah ketika Anda menyebutnya:
Lihat jquery-events-stop-misusing-return-false untuk informasi lebih lanjut.
Sebagai contoh :
saat mengklik tautan ini, return false akan membatalkan perilaku default browser .
sumber
e.preventDefault()
) Tetapi tidak menghentikan propagasi. Lihat: jsfiddle.net/18yq1783Memotong kembali salah dari acara JavaScript biasanya membatalkan perilaku "default" - dalam kasus tautan, ini memberi tahu peramban untuk tidak mengikuti tautan.
sumber
Saya percaya itu menyebabkan peristiwa standar tidak terjadi.
Dalam contoh Anda, browser tidak akan mencoba masuk ke #.
sumber
Return false akan menghentikan hyperlink yang diikuti setelah javascript berjalan. Ini berguna untuk javascript tidak mencolok yang menurun dengan anggun - misalnya, Anda dapat memiliki gambar mini yang menggunakan javascript untuk membuka sembulan gambar berukuran penuh. Ketika javascript dimatikan atau gambar diklik tengah (dibuka di tab baru) ini mengabaikan acara onClick dan hanya membuka gambar sebagai gambar berukuran penuh secara normal.
Jika return false tidak ditentukan, gambar akan meluncurkan pop-up dan membuka gambar secara normal. Beberapa orang alih-alih menggunakan return false menggunakan javascript sebagai atribut href, tetapi ini berarti bahwa ketika javascript dinonaktifkan, tautan tidak akan melakukan apa-apa.
sumber
menggunakan return false dalam acara onclick menghentikan browser dari memproses sisa tumpukan eksekusi, yang mencakup mengikuti tautan dalam atribut href.
Dengan kata lain, menambahkan return false menghentikan href dari bekerja. Dalam contoh Anda, inilah yang Anda inginkan.
Di tombol, itu tidak perlu karena hanya itu yang akan dieksekusi onclick - tidak ada href untuk diproses dan pergi ke.
sumber
Return false mengatakan tidak mengambil tindakan default, yang dalam hal ini
<a href>
adalah untuk mengikuti tautan. Ketika Anda mengembalikan false ke onclick, maka href akan diabaikan.sumber
Retasan browser: http://jszen.blogspot.com/2007/03/return-false-to-prevent-jumping.html
sumber
Return false akan mencegah navigasi. Jika tidak, lokasi akan menjadi nilai balik dari someFunc
sumber
The
return false
mencegah halaman dari yang dinavigasi dan bergulir yang tidak diinginkan dari jendela ke atas atau bawah.sumber
Saya terkejut bahwa tidak ada yang disebutkan
onmousedown
bukanonclick
. Ituonclick='return false'
tidak menangkap perilaku default peramban yang mengakibatkan pemilihan teks (terkadang tidak diinginkan) terjadi
mousedown
tetapionmousedown='return false'
tidak.
Dengan kata lain, ketika saya mengklik suatu tombol, teksnya kadang-kadang secara tidak sengaja dipilih untuk mengubah tampilan tombol, yang mungkin tidak diinginkan. Itu adalah perilaku default yang kami coba cegah di sini. Namun,
mousedown
acara tersebut telah didaftarkan sebelumnyaclick
, jadi jika Anda hanya mencegah perilaku itu di dalamclick
handler Anda , itu tidak akan mempengaruhi pilihan yang tidak diinginkan yang timbul darimousedown
acara tersebut. Jadi teks masih akan dipilih. Namun, mencegah default untukmousedown
acara tersebut akan melakukan pekerjaan.Lihat juga event.preventDefault () vs. return false
sumber
Saya memiliki tautan ini di halaman HTML saya:
Fungsi setBodyHtml () didefinisikan sebagai:
Ketika saya mengklik tautan, tautan itu menghilang dan teks yang ditampilkan di peramban berubah menjadi "konten baru".
Tetapi jika saya menghapus "false" dari tautan saya, mengklik tautan itu tidak (sepertinya) tidak berarti apa-apa. Mengapa demikian?
Itu karena jika saya tidak mengembalikan false, perilaku default mengklik tautan dan menampilkan halaman targetnya terjadi, tidak dibatalkan. TETAPI, di sini href dari hyperlink adalah "" sehingga tautan kembali ke halaman SAMA saat ini. Jadi halaman itu secara efektif hanya di-refresh dan sepertinya tidak terjadi apa-apa.
Di latar belakang fungsi setBodyHtml () masih dieksekusi. Ini memberikan argumennya ke body.innerHTML. Tetapi karena halaman tersebut segera di-refresh / dimuat ulang, isi tubuh yang dimodifikasi tidak tetap terlihat selama lebih dari beberapa milidetik mungkin, jadi saya tidak akan melihatnya.
Contoh ini menunjukkan mengapa terkadang BERMANFAAT untuk menggunakan "return false".
Saya ingin menetapkan BEBERAPA href ke tautan, sehingga ditampilkan sebagai tautan, seperti teks yang digarisbawahi. Tapi saya tidak ingin klik ke tautan secara efektif hanya memuat ulang halaman. Saya ingin navigasi standar = perilaku dibatalkan dan efek samping apa pun yang disebabkan oleh pemanggilan fungsi saya untuk mengambil dan tetap berlaku. Karena itu saya harus "mengembalikan salah".
Contoh di atas adalah sesuatu yang akan Anda coba dengan cepat selama pengembangan. Untuk produksi, Anda akan lebih cenderung menetapkan penangan-klik dalam JavaScript dan panggil preventDefault () sebagai gantinya. Tetapi untuk percobaan cepat, "return false" di atas akan berhasil.
sumber
Saat menggunakan formulir , kita dapat menggunakan 'return false' untuk mencegah pengiriman.
sumber