Hangisi daha iyi: <script type = "text / javascript">… </script> veya <script>… </script>


99

Hangisi daha iyi veya daha kullanışlı:

<script type="text/javascript">...</script> 

veya

<script>...</script>

7
Dil olarak javascript kullanıyorsanız, o zaman elbette 1'inci daha iyidir
Chinmayee G

Senaryoyu java-script olarak ilan etmekten elde edeceğiniz performans kazancı önemsiz, ama harika bir soru!
The_Butcher

10
Html v4 ve Html v5 içindeysek "doğru" yanıt farklı mıdır?
Dimitrios Mistriotis

Hangisinin daha iyi olduğu değil, neyin ne zaman kullanılacağı; HTML5 bildirimi <!doctype html>kullanılırken, varsayılan olarak geçerli olduğu şekliyle type="text/javascript"bir <script>etikette MIME türü ipucunun kullanılmasına gerek yoktur . Öte yandan (HTML5 olmayan), tavsiye edilir ve önerilir (MIME türü ipucu referans alınarak type="text/javascript").
nyedidikeke

Yanıtlar:


139

Bir tür özelliğine ihtiyacınız var mı? HTML5 kullanıyorsanız, hayır. Aksi takdirde evet. HTML 4.01 ve XHTML 1.0, typeözniteliği gerektiği gibi belirtirken, HTML5 varsayılan olarak isteğe bağlı olarak sahiptir text/javascript. HTML5 artık geniş çapta uygulanmaktadır, bu nedenle HTML5 belge türünü kullanırsanız <script>...</script>geçerlidir ve iyi bir seçimdir.

Tür özniteliğinde ne olması gerektiğine gelince application/javascript, 2006'da kaydedilen MIME türünün yerini alması amaçlanmıştır text/javascriptve tüm büyük tarayıcıların (Internet Explorer 9 dahil) mevcut sürümleri tarafından desteklenmektedir. İlgili RFC'den bir alıntı :

Bu belge böylece metin / javascript ve metin / ecmascript'i tanımlar ancak bunları "eski" olarak işaretler. Yukarıda kısmen listelenen deneysel ve kayıtsız ortam türlerinin kullanılması tavsiye edilmez. Medya türleri,

  * application/javascript
  * application/ecmascript

Bu belgede de tanımlanan, ortak kullanım amaçlıdır ve bunun yerine kullanılmalıdır.

Ancak, sürüm 8'e kadarki IE ve sürüm 8 dahil olmak üzere <script>, bir veya veya typeözniteliğine sahip bir öğenin içinde komut dosyası yürütmez , bu nedenle eski IE'yi desteklemeniz gerekiyorsa, takılıp kalırsınız .application/javascriptapplication/ecmascripttext/javascript


3
typeÖzniteliğe "ihtiyacınız yok" . HTML4.01 veya XHTML 1.0'a göre doğrulama artık yapmanız gereken şey değil ve tüm tarayıcılar etiketinizi onsuz destekleyecektext/javascript
Ian Storm Taylor

9
@Ian: Bu yazı yazıldığı sırada, HTML5 spesifikasyonu çalışan bir taslaktı ve henüz sürekli hareket eden hedef statüsüne henüz dönüşmemişti. HTML5'in tarayıcı uygulamaları şu anda bulundukları yerin önemli bir gerisindeydi. Bunu göz önünde bulundurarak, o zamanlar HTML5'in genel web'de kullanım için uygun olmadığını ve cevabımın kesinlikle adil olduğunu ve her zaman "HTML'nizin geçerli olmasını istiyorsanız" sorumluluk reddi beyanını taşıdığını düşünüyorum . O zamandan beri işlerin değiştiğini ve bu cevabın revizyonla yapılabileceğini kabul ediyorum, ancak HTML 4.01'de web sayfaları yazmanın artık her zaman yapılacak yanlış bir şey olduğuna katılmıyorum.
Tim Down

1
+1, bu soruyu bir dupe'dan yeni keşfetti. Bu bana Anne Van Kesteren'in blogundaki, bunu tartıştığı JavaScript MIME türü dahil olmak üzere birkaç gönderiyi hatırlatıyor . Tam olarak bulamıyorum, ancak tüm tarayıcılarda çalıştığı için hiç kullanmamasını önerdiği bir gönderi olduğundan emindim . Belki başkasıydı. type
Andy E

1
Bir "application / javascript" JS dosyasının neden IE8 ve altında çalıştırılmadığını anlamaya çalışırken "teşekkürler" demek istedim!
andrewtweber

peki: "text / javascript; version = 1.8"?
SparK

10

Her ikisi de çalışır ancak xhtml standardı şunları da belirtmenizi gerektirir type:

<script type="text/javascript">..</script> 

<!ELEMENT SCRIPT - - %Script;          -- script statements -->
<!ATTLIST SCRIPT
  charset     %Charset;      #IMPLIED  -- char encoding of linked resource --
  type        %ContentType;  #REQUIRED -- content type of script language --
  src         %URI;          #IMPLIED  -- URI for an external script --
  defer       (defer)        #IMPLIED  -- UA may defer execution of script --
  >

type = content-type [CI] Bu öznitelik, öğenin içeriklerinin komut dosyası dilini belirtir ve varsayılan komut dosyası dilini geçersiz kılar. Komut dosyası dili, bir içerik türü olarak belirtilir (örneğin, "metin / javascript"). Yazarlar bu öznitelik için bir değer sağlamalıdır. Bu özellik için varsayılan değer yoktur.

Yukarıdaki vurguyu fark eder.

http://www.w3.org/TR/html4/interact/scripts.html

Not: HTML5'ten itibaren (çok uzakta), typeöznitelik gerekli değildir ve varsayılandır.


9

<script type="text/javascript"> </script>Html5 kullanmıyorsanız kullanmanız gerekir . Bu durumda tercih etmeniz önerilir <script> ... </script>(çünkü tür özelliği varsayılan olarak bu değere göre belirlenir)


5

Tek gereken bu:

<!doctype html>
<script src="/path.js"></script>

3

<script type="text/javascript"></script> çünkü bu doğru yol ve tüm tarayıcılarla uyumlu


-2

En son Firefox ile şunları kullanmalıyım:

<script type="text/javascript">...</script>

Ya da komut dosyası düzgün çalışmayabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.