Apa semua elemen penutup mandiri yang valid (mis. <br/>) di XHTML (seperti yang diterapkan oleh browser utama)?
Saya tahu bahwa XHTML secara teknis memungkinkan elemen apa pun untuk ditutup sendiri, tetapi saya sedang mencari daftar elemen yang didukung oleh semua browser utama. Lihat http://dusan.fora.si/blog/self-closing-tags untuk contoh beberapa masalah yang disebabkan oleh elemen penutup diri seperti <div />.
html
xhtml
browser
cross-browser
kamens
sumber
sumber
Jawaban:
Setiap browser yang mendukung XHTML (Firefox, Opera, Safari, IE9 ) mendukung sintaksis yang menutup sendiri pada setiap elemen .
<div/>
,<script/>
,<br></br>
Semua harus bekerja dengan baik. Jika tidak, maka Anda memiliki HTML dengan DOCTYPE XHTML yang ditambahkan secara tidak tepat.DOCTYPE tidak mengubah cara dokumen diartikan. Hanya tipe MIME yang melakukannya .
Keputusan W3C tentang mengabaikan DOCTYPE :
Ini adalah perangkap yang sangat umum, karena Validator W3C sebagian besar mengabaikan aturan itu, tetapi browser mengikutinya dengan agama. Baca Memahami HTML, XML, dan XHTML dari blog WebKit:
Untuk menguji apakah Anda memiliki XHTML asli atau HTML tidak valid dengan DOCTYPE XHTML, masukkan ini ke dalam dokumen Anda:
Ini memvalidasi, dan dalam XHTML nyata berfungsi dengan baik (lihat: 1 vs 2 ). Jika Anda tidak dapat mempercayai mata Anda (atau tidak tahu cara mengatur tipe MIME), buka halaman Anda melalui proxy XHTML .
Cara lain untuk memeriksa adalah melihat sumber di Firefox. Ini akan menyoroti garis miring merah ketika mereka tidak valid.
Di HTML5 / XHTML5 ini tidak berubah, dan perbedaannya bahkan lebih jelas, karena Anda bahkan tidak memiliki tambahan
DOCTYPE
.Content-Type
adalah raja.Sebagai catatan, spesifikasi XHTML memungkinkan elemen apa pun untuk menutup sendiri dengan menjadikan XHTML aplikasi XML : [penekanan milikku]
Itu juga secara eksplisit ditampilkan dalam spesifikasi XHTML :
sumber
<script>
atau<div>
menghasilkan rendering / interpretasi yang berbeda.text/html
. Dalam XHTML asli, dikirim karenaapplication/xhtml+xml
berfungsi dengan baik. Silakan baca artikel yang saya tautkan ke (atau spesifikasi XHTML Lampiran C) sebelum downvoting.application/xhtml+xml
tipe MIME saya dapat menjamin itu<script/>
akan berfungsi. Dengan tipe MIME. Hanya.Satu elemen yang sangat berhati-hati dengan topik ini adalah
<script
elemen>. Jika Anda memiliki file sumber eksternal, itu AKAN menyebabkan masalah ketika Anda menutupnya sendiri. Cobalah:Ini akan bekerja di Firefox, tetapi setidaknya istirahat di IE6. Saya tahu, karena saya mengalami ini ketika terlalu rajin menutup setiap elemen yang saya lihat ;-)
sumber
Sintaks self-closing bekerja pada semua elemen dalam aplikasi / xhtml + xml. Itu tidak didukung pada elemen apa pun di teks / html, tetapi elemen-elemen yang "kosong" di HTML4 atau "void" di HTML5 tidak mengambil tag akhir, jadi jika Anda menaruh garis miring pada yang muncul seolah-olah sintaks penutupan sendiri didukung.
sumber
Dari situs referensi Sekolah W3 :
sumber
/>
:"area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "link", "meta", "param"
grep EMPTY xhtml1-strict.dtd | sort
ataugrep EMPTY xhtml1-transitional.dtd | sort
Pertanyaan yang lebih baik adalah: tag apa yang dapat ditutup sendiri bahkan dalam mode HTML tanpa mempengaruhi kode? Jawab: hanya mereka yang memiliki konten kosong (tidak berlaku). Menurut spesifikasi HTML , elemen-elemen berikut tidak berlaku:
area, base, br, col, embed, hr, img, input, keygen, link, menuitem, meta, param, source, track, wbr
Versi spesifikasi yang lebih lama juga tercantum
command
. Selain itu, menurut berbagai sumber, tag usang atau non-standar berikut tidak berlaku:basefont, bgsound, frame, isindex
sumber
Semoga ini bisa membantu seseorang:
sumber
Bagaimana dengan
<meta>
dan<link>
? Mengapa mereka tidak ada dalam daftar itu?Aturan praktis, jangan tutup sendiri elemen apa pun yang dimaksudkan untuk memiliki konten, karena pasti akan menyebabkan masalah browser cepat atau lambat.
Orang-orang yang secara alami menutup diri, suka
<br>
dan<img>
, harus jelas. Yang tidak ... jangan ditutup sendiri!sumber
Terakhir kali saya memeriksa, berikut ini adalah elemen kosong / kosong yang tercantum dalam HTML5.
Berlaku untuk penulis: area, basis, br, col, command, embed, eventsource, jam, img, input, tautan, meta, param, sumber
Tidak valid untuk penulis: basefont, bgsound, frame, spacer, wbr
Selain beberapa yang baru di HTML5, yang akan memberi Anda gambaran tentang yang mungkin didukung saat menyajikan XHTML sebagai teks / html. (Cukup uji mereka dengan memeriksa DOM yang dihasilkan.)
Sedangkan untuk XHTML berfungsi sebagai aplikasi / xhtml + xml (yang menjadikannya XML), aturan XML berlaku dan elemen apa pun bisa kosong (meskipun XHTML DTD tidak dapat mengungkapkan ini).
sumber
Anda harus melihat DTD xHTML , semuanya terdaftar. Berikut ini ulasan singkat semua yang utama:
sumber
Mereka disebut elemen "void" dalam HTML 5. Mereka terdaftar dalam spesifikasi W3 resmi .
Per April 2013, mereka adalah:
Per Desember 2018 (HTML 5.2), mereka adalah:
sumber
Masalah tag penutup diri lain untuk IE adalah elemen judul. Ketika IE (baru mencobanya di IE7) melihat ini, itu menyajikan pengguna halaman kosong. Namun Anda "melihat sumber" dan semuanya ada di sana.
Saya awalnya melihat ini ketika XSLT saya membuat tag penutup sendiri.
sumber
<title/>
tag.Saya tidak akan mencoba menguraikan hal ini lebih lanjut, terutama karena sebagian besar halaman yang saya tulis dihasilkan atau tag memiliki konten. Hanya dua yang pernah memberi saya kesulitan ketika membuat mereka menutup diri adalah:
<title/>
Untuk ini, saya hanya memilih untuk selalu memberikannya tag penutup yang terpisah, karena setelah itu ada di sana di
<head></head>
dalamnya tidak benar-benar membuat kode Anda lebih berantakan untuk digunakan.<script/>
Ini adalah masalah besar yang baru-baru ini saya hadapi. Selama bertahun-tahun saya selalu menggunakan
<script/>
tag yang menutup sendiri ketika skrip berasal dari sumber eksternal. Tapi saya baru-baru ini mulai menerima pesan kesalahan JavaScript tentang formulir nol. Setelah beberapa hari penelitian, saya menemukan bahwa masalahnya (seharusnya) bahwa browser tidak pernah sampai ke<form>
tag karena tidak menyadari ini adalah akhir dari<script/>
tag. Jadi ketika saya membuatnya menjadi<script></script>
tag terpisah , semuanya bekerja. Mengapa berbeda di halaman berbeda yang saya buat di browser yang sama, saya tidak tahu, tapi itu melegakan untuk menemukan solusinya!sumber
<jam /> adalah hal lain
sumber