Pertanyaan Apa artinya "javascript: void (0)" artinya?


<a href="javascript:void(0)" id="loginlink">login</a>

Saya telah melihat seperti itu hrefberkali-kali, tapi saya tidak tahu persis apa artinya itu.


1029
2017-08-18 05:20


asal


Jawaban:


Itu void operator mengevaluasi yang diberikan   berekspresi dan kemudian kembali undefined.

Itu void operator sering digunakan semata   untuk mendapatkan undefined primitif   nilai, biasanya menggunakan “void(0)"(Yang mana   setara dengan “void 0”). Dalam ini   kasus, variabel global undefined   dapat digunakan sebagai gantinya (dengan asumsi memiliki   belum ditetapkan ke non-default   nilai).

Penjelasan disediakan di sini: void operator.

Alasan Anda ingin melakukan ini dengan href tautan adalah yang biasanya, a javascript: URL akan mengarahkan browser ke versi teks biasa dari hasil mengevaluasi JavaScript itu. Tetapi jika hasilnya undefined, maka browser tetap di halaman yang sama. void(0) hanyalah skrip singkat dan sederhana yang dievaluasi undefined.


793
2017-08-18 05:23



Selain jawaban teknis, javascript:void berarti penulisnya Melakukannya Salah.

Tidak ada alasan bagus untuk menggunakan javascript: pseudo-URL (*). Dalam praktiknya akan menyebabkan kebingungan atau kesalahan jika seseorang mencoba hal-hal seperti 'bookmark link', 'buka tautan di tab baru', dan seterusnya. Hal ini cukup sering terjadi saat orang-orang sudah terbiasa dengan tab klik tengah-untuk-baru: sepertinya tautan, Anda ingin membacanya di tab baru, tetapi ternyata bukan tautan sebenarnya sama sekali, dan memberikan hasil yang tidak diinginkan seperti halaman kosong atau kesalahan JS ketika diklik tengah.

<a href="#"> adalah alternatif umum yang mungkin bisa dibilang kurang buruk. Namun Anda harus ingat return false dari kamu onclick pengendali event untuk mencegah link diikuti dan bergulir ke atas halaman.

Dalam beberapa kasus mungkin ada tempat yang sangat berguna untuk mengarahkan tautan ke. Misalnya jika Anda memiliki kontrol, Anda dapat mengeklik yang membuka yang sebelumnya tersembunyi <div id="foo">, itu masuk akal untuk digunakan <a href="#foo"> untuk menautkannya. Atau jika ada cara non-JavaScript untuk melakukan hal yang sama (misalnya, ‘thispage.php? Show = foo’ yang menetapkan foo terlihat untuk memulai), Anda dapat menaut ke itu.

Jika tidak, jika tautan hanya mengarah ke beberapa skrip, tautan itu sebenarnya bukan tautan dan tidak boleh ditandai sebagai tautan. Pendekatan yang biasa dilakukan adalah dengan menambahkan onclick ke a <span>, <div>, atau sebuah <a> tanpa sebuah href dan gaya dalam beberapa cara untuk membuatnya jelas Anda dapat mengkliknya. Inilah yang dilakukan StackOverflow pada saat penulisan; sekarang menggunakan href="#"].

Kerugiannya adalah Anda kehilangan kontrol keyboard, karena Anda tidak dapat tab ke rentang / div / bare-a atau mengaktifkannya dengan ruang. Apakah ini benar-benar kerugian tergantung pada jenis tindakan apa yang dimaksudkan untuk diambil. Anda dapat, dengan beberapa upaya, mencoba untuk meniru interaksi keyboard dengan menambahkan tabIndex ke elemen, dan mendengarkan penekanan tombol Space. Tapi itu tidak akan pernah 100% mereproduksi perilaku browser nyata, paling tidak karena browser yang berbeda dapat merespon keyboard secara berbeda (belum lagi browser non-visual).

Jika Anda benar-benar menginginkan elemen yang bukan tautan tetapi dapat diaktifkan seperti biasa oleh mouse atau keyboard, yang Anda inginkan adalah a <button type="button"> (atau <input type="button"> sama bagusnya, untuk isi tekstual yang sederhana). Anda selalu dapat menggunakan CSS untuk mengulangnya ulang agar terlihat lebih mirip tautan daripada tombol, jika Anda mau. Tapi karena itu berperilaku seperti tombol, itulah bagaimana seharusnya Anda menandainya.

(*: di situs authoring, anyway. Tentunya mereka berguna untuk bookmarklet. javascript: pseudo-URL adalah bizarreness konseptual: locator yang tidak menunjuk ke lokasi, tetapi memanggil kode aktif di dalam lokasi saat ini. Mereka telah menyebabkan masalah keamanan besar untuk browser dan webapps, dan seharusnya tidak pernah ditemukan oleh Netscape.)


368
2017-08-18 10:50



Itu berarti tidak akan melakukan apa pun. Ini adalah upaya untuk memiliki tautan yang tidak 'navigasi' di mana saja. Tetapi itu bukan cara yang benar.

Anda seharusnya benar-benar adil return false dalam onclick acara, seperti:

<a href="#" onclick="return false;">hello</a>

Biasanya ini digunakan jika tautannya melakukan beberapa hal 'JavaScript-y'. Seperti mengeposkan formulir AJAX, atau menukar gambar, atau apa pun. Dalam hal ini Anda hanya membuat fungsi apa pun yang dipanggil kembali false.

Namun, untuk membuat situs web Anda benar-benar luar biasa, umumnya Anda akan menyertakan tautan yang melakukan tindakan yang sama, jika orang yang menjelajahinya memilih untuk tidak menjalankan JavaScript.

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>

102
2017-08-18 05:21



Ada perbedaan BESAR dalam perilaku "#" vs javascript: void

"#" menggulir Anda ke bagian atas halaman sementara "javascript: void (0);" tidak.

Ini sangat penting jika Anda mengoding halaman dinamis. pengguna tidak ingin kembali ke atas hanya karena dia mengklik tautan di halaman.


57
2017-08-18 08:25



Ini digunakan sangat populer untuk menambahkan fungsi JavaScript ke tautan HTML, misalnya: [Print] tautan yang Anda lihat di banyak halaman web. Kode seperti:

<a href="javascript:void(0)" onclick="call print function">Print</a>

Kenapa kita butuh 'href' sementara 'onclick' sendiri dapat menyelesaikan pekerjaan? Karena jika kita menghilangkan 'href', ketika pengguna mengarahkan mouse ke teks "Print", kursor akan berubah menjadi "I". Memiliki 'href' biarkan kursor ditampilkan seolah-olah itu adalah hyperlink: tangan yang menunjuk.

PS: Ada dua metode: 1. href="javascript:void(0);" dan 2. href="#" - keduanya memiliki efek yang sama. Tetapi yang pertama membutuhkan JavaScript untuk dinyalakan di browser web sementara yang kedua tidak. Jadi yang kedua tampaknya lebih kompatibel.


46
2018-01-14 07:17



Anda harus selalu memiliki href pada Anda Sebuah tag. Memanggil fungsi JavaScript yang mengembalikan 'tidak terdefinisi' akan baik-baik saja. Jadi akan menghubungkan ke '#'.

Anchor tag di Internet Explorer 6 tanpa href tidak mendapatkan a:hover gaya diterapkan.

Ya, itu mengerikan dan kejahatan kecil terhadap kemanusiaan, tetapi sekali lagi begitu juga Internet Explorer 6 pada umumnya.

Saya harap ini membantu.

Internet Explorer 6 sebenarnya adalah kejahatan besar terhadap kemanusiaan.


35
2017-08-18 05:25



Itu void operator mengevaluasi ekspresi yang diberikan dan kemudian mengembalikan undefined. Menghindari menyegarkan halaman.


13
2017-07-24 13:47



void adalah operator yang digunakan untuk mengembalikan undefined nilai sehingga browser tidak akan dapat memuat halaman baru.

Peramban web akan mencoba dan mengambil apa pun yang digunakan sebagai URL dan memuatnya kecuali itu adalah fungsi JavaScript yang mengembalikan null. Misalnya, jika kita mengklik tautan seperti ini:

<a href="javascript: alert('Hello World')">Click Me</a>

kemudian pesan peringatan akan muncul tanpa memuat halaman baru, dan itu karena alert adalah fungsi yang mengembalikan nilai nol. Ini berarti bahwa ketika browser mencoba memuat halaman baru, ia melihat nol dan tidak memuat apa pun.

Suatu hal yang penting untuk dicatat tentang operator batal adalah bahwa ia memerlukan nilai dan tidak dapat digunakan dengan sendirinya. Kami harus menggunakannya seperti ini:

<a href="javascript: void(0)">I am a useless link</a>

13
2018-03-15 07:34



Perlu disebutkan bahwa Anda kadang-kadang melihat kekosongan 0 saat memeriksa tidak terdefinisi, hanya karena itu membutuhkan lebih sedikit karakter.

Sebagai contoh:

something === undefined

vs.

something === void 0

Beberapa metode minifikasi menggantikan undefined dengan void 0 karena alasan ini.


12
2017-11-10 06:32



Penggunaan dari javascript:void(0) berarti penulis HTML menyalahgunakan elemen jangkar sebagai pengganti elemen tombol.

Tag Anchor sering disalahgunakan dengan event onclick untuk dibuat   pseudo-buttons dengan mengatur href ke "#" atau "javascript: void (0)" menjadi   mencegah halaman agar tidak menyegarkan. Nilai-nilai ini menyebabkan tak terduga   perilaku saat menyalin / menyeret tautan, membuka tautan dalam yang baru   tab / jendela, bookmark, dan saat JavaScript masih mengunduh,   kesalahan keluar, atau dinonaktifkan. Ini juga menyampaikan semantik yang salah   teknologi bantu (mis., pembaca layar). Dalam kasus seperti ini   disarankan untuk menggunakan <button> sebagai gantinya. Secara umum Anda hanya harus menggunakan   jangkar untuk navigasi menggunakan URL yang tepat.

Sumber: MDN <a> Halaman.


10
2017-10-04 22:43



Untuk memahami konsep ini, pertama-tama kita harus memahami operator void di JavaScript.

Sintaks untuk operator hampa adalah: void «expr» yang mengevaluasi expr dan mengembalikan undefined.

Jika Anda mengimplementasikan void sebagai fungsi, tampilannya sebagai berikut:

function myVoid(expr) {
    return undefined;
}

Operator kekosongan ini memiliki satu penggunaan penting yaitu - membuang hasil ekspresi.

Dalam beberapa situasi, penting untuk mengembalikan tidak terdefinisi sebagai lawan dari hasil ekspresi. Maka kekosongan dapat digunakan untuk membuang hasil itu. Salah satu situasi tersebut melibatkan javascript: URL, yang harus dihindari untuk tautan, tetapi berguna untuk bookmarklet. Saat Anda mengunjungi salah satu URL tersebut, banyak peramban mengganti dokumen saat ini dengan hasil evaluasi "konten" URL, tetapi hanya jika hasilnya tidak terdefinisi. Oleh karena itu, jika Anda ingin membuka jendela baru tanpa mengubah konten yang ditampilkan saat ini, Anda dapat melakukan hal berikut:

javascript:void window.open("http://example.com/")

9
2017-08-02 09:16