Apakah komentar HTML di dalam tag skrip merupakan praktik terbaik? [Tutup]

97

Praktik berikut ini cukup umum di JavaScript sebaris yang harus saya tangani:

<script type="text/javascript">
   <!--
       // Code goes here
   //-->
</script>

Saya tahu bahwa intinya adalah mencegah browser yang tidak kompatibel dengan JavaScript merender sumber, tetapi apakah ini masih merupakan praktik terbaik saat ini? Sebagian besar browser yang digunakan saat ini dapat menafsirkan JavaScript; bahkan perangkat seluler modern biasanya tidak mengalami masalah.

Adapun pertanyaan 'mengapa tidak?' pertanyaan: Saya baru-baru ini harus menghabiskan beberapa jam untuk men-debug masalah ketika seseorang meninggalkan '//' di depan '->' di akhir tag skrip yang terkubur jauh di dalam beberapa laman, dan ini menyebabkan JavaScript yang misterius kesalahan.

Apa yang kamu kerjakan? Apakah ini masih dianggap sebagai 'praktik terbaik'?

AndreiM
sumber

Jawaban:

118

Hal yang terpenting adalah saat ini, apakah browser tertentu mendukung JavaScript atau tidak adalah tidak relevan (jelas sebagian besar mendukungnya) - tidak relevan karena hampir semua memahami blok skrip, yang berarti mereka tahu untuk mengabaikan JavaScript meskipun mereka tidak bisa. menafsirkannya.

Matt Kruse memberikan penjelasan yang sedikit lebih rinci di situs JavaScript Toolbox-nya tentang mengapa secara khusus tidak menggunakan komentar HTML dalam blok skrip.

Dikutip dari halaman itu:


Jangan Gunakan Komentar HTML Di Blok Skrip

Di zaman kuno javascript (1995), beberapa browser seperti Netscape 1.0 tidak memiliki dukungan atau pengetahuan tentang tag skrip. Jadi, saat javascript pertama kali dirilis, diperlukan teknik untuk menyembunyikan kode dari browser lama sehingga mereka tidak akan menampilkannya sebagai teks di halaman. 'Retasan' adalah menggunakan komentar HTML di dalam blok skrip untuk menyembunyikan kode.

Menggunakan Komentar HTML Dalam Skrip Itu Buruk

// DON'T do this! Code is just representative on how things were done
<script language="javascript">
<!--
   // code here
//-->
</script>

Tidak ada browser yang umum digunakan saat ini yang mengabaikan tag <script>, jadi menyembunyikan sumber javascript tidak lagi diperlukan. Faktanya, itu bisa dianggap berbahaya karena alasan berikut:

  • Dalam dokumen XHTML, sumber sebenarnya akan disembunyikan dari semua browser dan dianggap tidak berguna
  • - tidak diperbolehkan dalam komentar HTML, jadi operasi pengurangan apa pun dalam skrip tidak valid
Noldorin
sumber
1
+1. Saya tahu ada seseorang yang memiliki banyak informasi tentang topik ini dari hari-hari comp.lang.javascript saya, saya membaca dengan teliti arsip grup berita ketika jawaban Anda muncul, mengutip Matt.
Grant Wagner
1
Dalam XHTML, Anda dapat menggunakan CDATA sebagai pengganti komentar HTML: <script ...> // <! [CDATA [... //]]> </script>
Concrete Gannet
Saya harus menambahkan bahwa 'peretasan' ini menghasilkan kesalahan di Internet Explorer 9 (Klien mengeluh tentang halaman yang tidak berfungsi dengan benar dan inilah penyebabnya)
lordscales91
24

Saya sudah berhenti melakukannya. Pada titik tertentu Anda hanya perlu melepaskan NCSA Mosaic Anda.

kekacauan
sumber
7
Dengan kata lain, tidak ada alasan yang diberikan mengapa OP harus berhenti melakukannya. Anda menyarankan dia harus berhenti melakukannya karena Anda melakukannya, yang bukan alasan yang cukup baik untuk menjadi jawaban IMO.
Lawrence Aiello
1
@ LawrenceAiello: Bagaimana dengan frase "praktik terbaik" yang membuat Anda memikirkan "fakta" dan bukan "opini"?
kekacauan
5
nah di situlah letak kesalahan pamungkas di seluruh posting ini. Seharusnya ditutup karena ini pertanyaan diskusi.
Lawrence Aiello
1
Mungkin ketika ini diposting enam tahun yang lalu ini memenuhi syarat sebagai jawaban, namun menurut standar situs saat ini tidak.
j08691
1
Jawaban ini sedang dibahas di Meta SO
CubeJockey
10

Sesuai Rekomendasi W3C , sangat berguna untuk menyembunyikan data skrip dari AGEN PENGGUNA.

Dikutip dari halaman W3c :

Skrip komentar dalam JavaScript Mesin JavaScript memungkinkan string "<!--"muncul di awal elemen SCRIPT, dan mengabaikan karakter lebih lanjut hingga akhir baris. JavaScript mengartikan "//" sebagai memulai komentar yang diperpanjang hingga akhir baris saat ini. Ini diperlukan untuk menyembunyikan string "->" dari parser JavaScript.

    <SCRIPT type="text/javascript">
<!--  to hide script contents from old browsers
  function square(i) {
    document.write("The call passed ", i ," to the function.","<BR>")
    return i * i
  }
  document.write("The function returned ",square(5),".")
// end hiding contents from old browsers  -->
</SCRIPT>
Webrsk
sumber
2
Jika HTML 4.x sedang digunakan. Ini adalah cerita yang berbeda dengan XHTML.
Quentin
8

Tidak, ini adalah hangover dari solusi yang digunakan saat elemen skrip pertama kali diperkenalkan. Tidak ada browser yang gagal memahami elemen skrip hari ini (meskipun browser memahaminya sebagai "Skrip yang harus diabaikan karena skrip dimatikan atau tidak didukung").

Dalam XHTML, mereka secara aktif berbahaya.

Saya menulis sesuatu tentang sejarahnya beberapa waktu yang lalu.

Quentin
sumber
3

Berhenti menggunakan ini beberapa waktu lalu. Selain itu, menurut Douglas Crockford , Anda dapat melepaskan atribut type dari tag skrip Anda karena satu-satunya bahasa skrip yang tersedia di sebagian besar browser adalah JavaScript.

Jake McGraw
sumber
1
Sebagian besar browser masih akan berfungsi, itu melanggar spesifikasi HTML, jadi saya tidak akan menyarankannya.
Quentin
4
Anda tidak pernah tahu kapan IE akan menggunakan skrip VB sebagai tipe default ..
Francis
1

Jika Anda mengetik secara manual, saya sarankan Anda selalu menggunakan file js eksternal, itu akan sangat membantu.

Mengenai kekhawatiran Anda: sebagian besar browser saat ini aman JavaScript. Namun terkadang orang mungkin menulis parser sederhana untuk mengambil HTML secara langsung - dan saya harus mengatakan, kutipan aman sangat membantu klien tersebut. Juga beberapa klien non-JS seperti Lynx lama akan mendapatkan keuntungan dari ini.

Francis
sumber
1

Jika Anda tidak menyertakan teks literal di antara tag skrip- yaitu, jika Anda memuat skrip dari file src, Anda dapat melupakan komentarnya.

kennebec
sumber
0

Saya berhenti melakukan itu sejak lama. Anda benar-benar tidak membutuhkannya di zaman sekarang ini.

John Topley
sumber
@Yvette Apa motivasi Anda untuk memposting komentar itu enam tahun setelah saya memposting jawaban saya?
John Topley
@Yvette Jangan tersinggung, saya hanya ingin tahu. Dan tentu saja Anda benar; saat ini saya akan mempostingnya sebagai komentar.
John Topley
-1

Saya tidak melakukannya tetapi beberapa hari yang lalu saya pergi untuk memvalidasi situs saya yang dilindungi kata sandi di w3c. Jadi saya harus menggunakan metode input langsung mereka. Itu mengeluh tentang javascript saya, jadi saya mengembalikan komentar di semuanya baik-baik saja.

JoshBerke
sumber