Pertanyaan Apakah

Saya memiliki pertanyaan ini yang mengusik sedikit aneh pikiran saya untuk sementara waktu sekarang dan saya pikir saya akan menanyakan keahlian kolektif Anda untuk jawaban atas pertanyaan ini.

Untuk menguraikan judul, katakan saya punya ini:

alert ("Some JS outside");

Di luar itu <head></head> tag dari file HTML saya. Pertanyaan saya adalah apakah tidak apa-apa untuk melakukan ini atau tidak, dan berapa banyak yang digunakan seperti ini.

Naluri saya mengatakan itu tidak apa-apa - saya pikir peramban mencari semua HTML untuk <script> tag dan menafsirkannya ketika mereka melihatnya, jadi itu harus ok, tapi saya tidak begitu hebat dengan cara kerja browser.

Saya mencari jawaban definitif (atau sedekat mungkin untuk definitif) di sini - apakah itu baik untuk dilakukan, atau tidak?

EDIT: Untuk menyelamatkan saya memposting ini beberapa kali, saya akan mengatakannya sekali di sini. Terima kasih banyak untuk semua orang masukan Anda. Berikan suara untuk Anda semua! Saya harus melatih diri untuk menempatkan JS di bagian bawah halaman - sekarang saya berpikir tentang hal itu sangat jelas bahwa skrip di bawah halaman jauh lebih baik dari atas. Terima kasih atas bantuan Anda semua.


32
2017-11-30 16:26


asal


Jawaban:


Tempat terbaik untuk tag skrip Anda adalah sebelum tag body penutup Anda.

<html>
      <head>
      <title>Example</title>
      </head>
      <body>
            Your Content
      <script type="text/javascript" src="yourScriptHere.js"></script>
      <script type="text/javascript">//Inline scripts etc.</script>
      </body>
</html>

Yang mengatakan mereka dapat menjadi tempat lain tanpa masalah namun alasan Anda menginginkannya pada akhirnya adalah bahwa Anda ingin memastikan halaman telah dimuat sebelum eksekusi dan Anda juga tidak ingin menunda kemajuan pengunduhan klien membuat mereka menunggu pada skrip besar.


22
2017-11-30 16:29



Iya nih, <script> blok di luar <head> baik-baik saja.

Bahkan banyak yang mendorong menempatkan mereka di ujung <body>. Menempatkan mereka tepat sebelum </body>, defers mengambil / memuat sampai setelah konten halaman ... untuk mempercepat render.

Dari spesifikasi W3C HTML4:

Elemen SCRIPT menempatkan skrip di dalam dokumen. Elemen ini dapat muncul beberapa kali di HEAD atau BODY dari dokumen HTML.


12
2017-11-30 16:28



Iya nih. Tidak apa-apa. Infact, sangat sering diperlukan. Dalam banyak kasus, Anda mungkin memiliki beberapa javascript yang memuat-panjang (baca: unduh besar) yang tidak penting bagi laman, jadi Anda ingin agar sisa konten laman Anda dimuat terlebih dahulu, sehingga Anda menempatkan <script> untuk itu javascript di bagian bawah <body> bagian.


11
2017-11-30 16:27



Skrip di badan dokumen Anda akan dieksekusi ketika ditemui. Jika itu fungsi, maka "mengeksekusinya" berarti mendefinisikan fungsi, yaitu menambahkannya ke daftar fungsi yang dikenal. Tetapi jika itu bukan fungsi, jika itu adalah blok pernyataan yang berdiri sendiri, mereka akan dieksekusi di tempat yang ditemui.

Misalnya, jika Anda menulis:

<html><head>... whatever ...</head>
<p>Foo
<script>
document.write("bar")
</script>
<p>Plugh
</html>

Browser akan menampilkan:

Foobar
Plugh

Ini mungkin atau mungkin bukan yang Anda inginkan.


2
2017-11-30 17:21