Sebuah script
elemen yang mendapat bergaya sebagai display:block
muncul terlihat. Mengapa itu mungkin dan apakah ada kasus penggunaan nyata yang diinginkan?
td > * {
display: block;
}
<table>
<tr>
<td>
<script type="text/javascript">
var test = 1;
</script>von 1
</td>
</tr>
</table>
html
css
script-tag
wutzebaer
sumber
sumber
<style>
dengan konten yang dapat diedit. Cara yang bagus untuk melihat efek secara real time.Jawaban:
Spesifikasi HTML5 mendefinisikan lembar gaya yang diharapkan digunakan oleh agen pengguna (seperti browser). Bagian 10.3.1 mencantumkan gaya untuk "Elemen tersembunyi":
Seperti yang Anda lihat, ini berlaku
display: none;
untukscript
.Ini adalah satu-satunya "penghalang" antara pengguna Anda dan
script
elemen tersembunyi . Ini sangat bagus dan dimaksudkan untuk dapat menimpa gaya dari style sheet agen-pengguna di dalam style sheet penulis (dan tentu saja juga di dalam style style pengguna).Mengapa seseorang mungkin ingin menggunakannya? Satu use case adalah menampilkan konten tanpa harus melarikan diri karakter seperti
<
/>
, mirip denganxmp
elemen yang lama . Thescript
elemen dapat digunakan tidak hanya untuk script, tetapi juga untuk blok data (yaitu, untuk apa pun dengan tipe MIME).sumber
<script>
- blok data tidak dapat dimuat olehsrc
.src
atribut tidak diperbolehkan padascript
elemen.Karena mereka adalah elemen HTML seperti yang lain dan tidak ada alasan untuk menulis aturan kasus khusus dalam spesifikasi HTML (yang akan menambah kerumitan) untuk mencegah CSS menerapkannya.
Setiap elemen dapat ditata. Ambil, misalnya:
Tentu saja tidak ada yang umum, tetapi aturan umum tidak dirancang untuk masuk akal untuk segala sesuatu yang dapat Anda terapkan. Mereka dirancang untuk kasus-kasus umum.
sumber
user agent stylesheet: script {display:none}
<script type="text/plain">
seperti<xmp>
sebelumnya, tetapi masih kompatibel dengan validator W3C.script {display: block !important;}
tidak bekerja ketika tidak ada aturan kasus khusus?script
tag juga harus dalam elemen yang terlihat - tag hanya akan menampilkan Andascript
di badan, bukan eghead
secara default.Kasus penggunaan lain (tidak umum):
Saya terkadang menggunakan
<script>
tag untuk contoh kode HTML singkat dalam panduan gaya. Dengan begitu saya tidak perlu lari dari tag HTML dan karakter khusus. Dan tag editor teks autocomplete dan syntax highlighting masih berfungsi. Tapi tidak ada cara mudah untuk menambahkan highlight sintaks di browser.sumber
text/html
dan menggunakan sesuatu seperticlass="codesample"
untuk menerapkan gaya. Hanya karena alasan yang tidak masuk akal: Dx-
awalan standar untuk jenis kustom, yaitu membuatnyatext/x-example
.Kemungkinan menggunakan case: untuk keperluan debugging.
Anda dapat menerapkan kelas di tingkat dokumen, mis.
<body class="debugscript">
, lalu gunakan beberapa CSS:sumber
<html class="debugscript">
?<head>
skrip karena<head>
itu sendiri jugadisplay:none
sehingga Anda harus mengungkapkannya secara paksa, yang dapat menyebabkan komplikasi lebih lanjut.Tag skrip disembunyikan secara default dengan menggunakan
display:none;
. Unor 1 menjelaskan spesifikasi bahasa yang mendasarinya. Namun, mereka masih merupakan bagian dari DOM dan dapat ditata sesuai.Yang mengatakan, penting untuk diingat persis apa yang dilakukan tag skrip. Meskipun dulu disertai dengan jenis dan bahasa, itu tidak lagi diperlukan. Sekarang diasumsikan bahwa JavaScript ada di sana, dan sebagai akibatnya browser akan menafsirkan dan mengeksekusi skrip saat ditemui (atau dimuat) dari tag ini.
Setelah skrip dieksekusi, konten tag hanya teks (sering disembunyikan) pada halaman. Teks ini bisa diungkapkan, tetapi juga bisa dihapus karena itu hanya teks.
Di bagian bawah halaman Anda, tepat sebelum
</html>
tag penutup , Anda dapat dengan mudah menghapus tag ini beserta teksnya dan tidak akan ada perubahan pada halaman.Sebagai contoh:
Ini tidak akan menghapus fungsi apa pun, karena keadaan halaman telah diubah dan tercermin dalam konteks eksekusi global saat ini. Misalnya, jika halaman telah memuat pustaka seperti jQuery, menghapus tag tidak akan berarti bahwa jQuery tidak lagi terbuka karena sudah ditambahkan ke lingkungan runtime halaman. Ini pada dasarnya hanya membuat alat inspeksi DOM tidak menunjukkan elemen skrip, tetapi itu menyoroti bahwa elemen skrip yang pernah dieksekusi benar-benar hanya teks.
1. unor, Kamis 07 Jul 2016, wutzebaer, "Kapan tag harus terlihat dan mengapa mereka bisa?", 1 Jul di 10:53, https://stackoverflow.com/a/38147398/1026459
sumber