Betik etiketini gövdenin ( </body>
) kapanış etiketinden sonra yerleştirmek ne kadar yanlıştır . ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Betik etiketini gövdenin ( </body>
) kapanış etiketinden sonra yerleştirmek ne kadar yanlıştır . ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Yanıtlar:
Veya etiketlerinin dışında doğrulama yapmaz . Ayrıca , gövde öğesi tamamen yüklenmeden IE'yi kırabilecek DOM manipülasyonları yapmazsanız - kapanmadan hemen önce koymak için çok fazla fark yaratmaz .<body>
<head>
</body>
<html>
....
<body>
....
<script type="text/javascript" src="theJs.js"></script>
</body>
</html>
<script src="..." defer>
, tüm büyük tarayıcılarda çalışır (IE9 ve daha düşük bir potansiyel kırılma hatası olsa da).
Evet. Yalnızca html öğesi için yorumlara ve bitiş etiketine, gövde için bitiş etiketinden sonra izin verilir.
Tarayıcılar hata kurtarma işlemi gerçekleştirebilir, ancak buna asla güvenmemelisiniz.
As Andy belge geçerli, ama yine de senaryo yine yorumlanacaktır değil olacağını söyledi. Örneğin WebKit'ten snippet'e bakın :
void HTMLParser::processCloseTag(Token* t)
{
// Support for really broken html.
// we never close the body tag, since some stupid web pages close it before
// the actual end of the doc.
// let's rely on the end() call to close things.
if (t->tagName == htmlTag || t->tagName == bodyTag
|| t->tagName == commentAtom)
return;
...
IE artık buna izin vermiyor (Sürüm 10'dan beri inanıyorum) ve bu tür komut dosyalarını göz ardı edecek. FF ve Chrome hala onları tolere ediyor, ancak bir gün bunu standart dışı bırakmaları ihtimali var.
"Element komut dosyası" , W3C tarafından önerilen işlem tarafından "ayrıştırma hatası" olduktan sonra yordamsal olarak "element komut dosyasını" ekleyin . "Ağaç Yapısı" nda hata oluşturun ve bu içeriği işlemek için "tekrar tokenize" komutunu çalıştırın. Bu ek bir adım gibi. Ancak bundan sonra "Betik Yürütme" çalıştırılabilir - şema sürecine bakın .
Başka bir şey "ayrıştırma hatası". "Ekleme modunu" "gövde içinde" olarak değiştirin ve jetonu yeniden işleyin.
Teknik olarak tarayıcı tarafından dahili süreç, nasıl işaretleyip optimize ettikleri.
Umarım birine yardım etmişimdir.
Evet. Ancak kodu dışında eklerseniz, çoğu tarayıcı bunu düzelteceğinden, muhtemelen dünyanın sonu olmayacaktır, ancak yine de girmek kötü bir uygulamadır.
Google bunu aslında 'CSS Optimizasyonu' konusunda önerir. Kritik üst kat stillerini astarlamayı ve geri kalanını ertelemeyi önerirler (css dosyası).
Misal:
<html>
<head>
<style>
.blue{color:blue;}
</style>
</head>
<body>
<div class="blue">
Hello, world!
</div>
</body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>
Bkz. Https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
body
Öğeyi öğenin dışına koymanız gerekmiyor . Bu Google makalesi kimseye böyle bir şey yapmasını önermez.
Modern tarayıcılar vücutta komut dosyası etiketlerini şu şekilde alacaktır:
<body>
<script src="scripts/main.js"></script>
</body>
Temel olarak, komut dosyası sayfa bittikten sonra yüklenecektir, bu da belirli durumlarda yararlı olabilir (DOM işleme). Ancak, aynı betiği almanızı ve aynı efekti vereceği için "erteleme" ile baş etiketine koymanızı önemle tavsiye ederim.
<head>
<script src="scripts/main.js" defer></script>
</head>
script
etiketlerin event
komut dosyasını ne zaman ayrıştıracağını belirlemek için tanımlanabilecek bir niteliğe sahip olmasıdır. Bu yüzden event="load" event="DOMContentLoaded"
DOM oluşturulduktan sonra veya event="beforeunload"
pencere beforeunload
olayında komut dosyasını çalıştırmanız gerekir . Örnek <script src="scripts/main.js" event="DOMContentLoaded"></script>
,.