Salah satu pengembang web kami menggunakan html berikut sebagai pengganti penataan daftar tarik turun.
<a href="" class="arrow"></a>
Apakah tag jangkar ini dianggap valid?
Karena tidak ada nilai href, itu muncul sebagai rusak pada beberapa laporan pemeriksa tautan kami.
Jawaban:
Meskipun pertanyaan ini sudah dijawab ( tl; dr: ya,
href
nilai kosong valid), tidak ada jawaban yang ada yang merujuk spesifikasi yang relevan.String kosong tidak boleh berupa URI. Namun,
href
atribut tidak hanya mengambil URI sebagai nilai, tetapi juga referensi URI. String kosong mungkin merupakan referensi URI.HTML 4.01
HTML 4.01 menggunakan RFC 2396 , di mana dikatakan di bagian 4.2. Referensi dokumen yang sama (huruf tebal penekanan):
RFC 2396 usang oleh RFC 3986 (yang saat ini merupakan standar URI IETF ), yang pada dasarnya mengatakan hal yang sama .
HTML5
Penggunaan HTML5 ( URL yang valid berpotensi dikelilingi oleh spasi → URL yang valid ) Spesifikasi URL W3C , yang telah dihentikan. URL Standar WHATWG harus digunakan sebagai gantinya (lihat bagian terakhir).
HTML 5.1
Penggunaan HTML 5.1 ( URL yang valid berpotensi dikelilingi oleh spasi → URL yang valid ) Standar URL WHATWG (lihat bagian berikutnya).
WHATWG HTML
HTML WHATWG menggunakan ( URL yang valid berpotensi dikelilingi oleh spasi ) definisi string URL yang valid dari WHATWG's URL Standard , di mana ia mengatakan bahwa itu bisa menjadi string relatif-URL-dengan-fragmen , yang setidaknya harus berupa string relatif-URL , yang dapat berupa string jalur-relatif-skema-kurang-URL , yang merupakan string jalur-relatif-URL yang tidak dimulai dengan string skema yang diikuti oleh
:
, dan definisinya mengatakan (tambang penekanan tebal):sumber
Itu sah.
Namun, praktik standar adalah menggunakan
href="#"
atau kadang-kadanghref="javascript:;"
.sumber
href="#"
, fokus bergerak ke atas halaman di IE, jadi saya pikirhref="javascript:;"
lebih baikSeperti yang orang lain katakan, itu valid.
Ada beberapa kerugian untuk setiap pendekatan:
href="#"
menambahkan entri tambahan ke riwayat peramban (yang menjengkelkan ketika misalnya tombol kembali).href=""
memuat kembali halamanhref="javascript:;"
tampaknya tidak memiliki masalah (selain terlihat berantakan dan tidak berarti) - ada yang tahu?sumber
Meskipun mungkin HTML yang benar-benar valid untuk tidak menyertakan href, terutama dengan handler onclick, ada beberapa hal yang perlu dipertimbangkan: itu tidak akan fokus pada keyboard tanpa menetapkan nilai tabindex. Selain itu, ini tidak akan dapat diakses oleh perangkat lunak screenreader menggunakan Internet Explorer, karena IE akan melaporkan melalui antarmuka aksesibilitas bahwa setiap elemen jangkar tanpa atribut href sebagai tidak-fokus, terlepas dari apakah tabindex telah ditetapkan.
Jadi sementara yang berikut ini mungkin benar-benar valid:
Jauh lebih baik untuk menambahkan atribut href efek-nol secara eksplisit
Untuk dukungan penuh dari semua pengguna, jika Anda menggunakan kelas dengan CSS untuk membuat gambar, Anda juga harus memasukkan beberapa konten teks, seperti atribut judul untuk memberikan deskripsi teks tentang apa yang terjadi.
sumber
href
akan mengacaukan dengan antarmuka aksesibilitas.href
nilai ke hal lain selain jalur relatif / absolut akan menyebabkan masalah pembaca layar. Hindari menggunakan simbol hash / pound sebagai solusi untuk masalah ini karena tidak dimaksudkan untuk ini. Pembaca layar dapat (saat ini VoiceOver) mengumumkan tautan Anda untuk menjadi pengidentifikasi fragmen (tautan ke suatu tempat di halaman saat ini) dan juga valid dari sudut pandang standar. lihat w3.org/2001/tag/2011/01/HashInURI-20110115#NakedHashKonsep HTML5 saat ini juga memungkinkan untuk menghilangkan atribut href sepenuhnya.
Untuk menjawab pertanyaan Anda: Ya itu valid.
sumber
<a>
elemen tanpahref
gaya ditata dengan gaya di beberapa browser. Misalnya, gaya ": hover" tidak berfungsi di Chrome (dan hal-hal aneh lainnya)<a>
tag tanpahref
mewakili sesuatu yang lain , bukan link (tradisional jangkar). Juga, ada perbedaan antara atribut opsional dan atribut yang bisa kosong.Memang, Anda dapat membiarkannya kosong (validator W3 tidak mengeluh).
Mengambil ide satu langkah lebih jauh: tinggalkan = "". Keuntungan dari hal ini adalah bahwa tautan tersebut tidak diperlakukan sebagai jangkar ke halaman saat ini.
sumber
<a href></a>
→ Atribut href tanpa nilai eksplisit terlihat. Atribut dapat dijatuhkan oleh IE7.Sementara validator W3 mungkin tidak mengeluh tentang
href
atribut kosong , Draft Kerja HTML5 saat ini menentukan:Sebuah URL yang valid adalah URL yang sesuai dengan Standar URL . Sekarang Standar URL agak membingungkan untuk diketahui, namun tidak menyatakan bahwa URL dapat berupa string kosong.
... yang berarti bahwa string kosong bukan URL yang valid.
Namun, Draf Kerja HTML5 menyatakan:
Ini berarti kita bisa menghilangkan
href
atributnya sekaligus:Jika niat Anda adalah bahwa elemen-elemen
href
tanpa inia
masih harus memerlukan interaksi keyboard, Anda harus menempuh rute normal untuk menetapkanrole
dan ditabindex
samping penangan klik / keydown yang biasa:sumber
href
membuatnya bukan hyperlink, yang membuatonclick
fungsionalitas tidak dapat diakses oleh pengguna keyboard.Sebuah kata peringatan:
Dalam pengalaman saya, menghilangkan
href
atribut menyebabkan masalah aksesibilitas karena navigasi keyboard akan mengabaikannya dan tidak pernah memberikannya fokus seperti ketika href ada. Memasukkan elemen Anda secara manual ke dalam tabindex adalah jalan keluarnya.sumber
itu valid tetapi seperti UpTheCreek mengatakan 'Ada beberapa kerugian untuk setiap pendekatan'
jika Anda memanggil ajax melalui tag biarkan href = "" seperti ini akan membuat halaman reload dan kode ajax tidak akan pernah dipanggil ...
baru saja mendapat pemikiran ini akan baik untuk dibagikan
sumber
Coba lakukan
<a href="#" class="arrow">
sebagai gantinya. (Catat#
karakter yang tajam ).sumber