Jak źle jest umieścić znacznik skryptu za znacznikiem zamykającym body ( </body>
). ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
javascript
html
DanC
źródło
źródło
Odpowiedzi:
Nie będzie sprawdzać poprawności poza tagami
<body>
lub<head>
. Nie będzie to również miało większego znaczenia - chyba że wykonujesz manipulacje DOM, które mogłyby uszkodzić IE przed pełnym załadowaniem elementu body - do umieszczenia go tuż przed zamknięciem</body>
.źródło
<script src="..." defer>
, który działa we wszystkich głównych przeglądarkach (choć z potencjalnie łamliwym błędem w IE9 i niższych).Tak. Tylko komentarze i znacznik końcowy elementu html są dozwolone po znaczniku końcowym dla treści.
Przeglądarki mogą wykonywać odzyskiwanie po błędzie, ale nigdy nie powinieneś na tym polegać.
źródło
Jak powiedział Andy , dokument nie będzie ważny, ale mimo to skrypt nadal będzie interpretowany. Zobacz fragment kodu z WebKit na przykład:
źródło
IE już na to nie pozwala (jak sądzę od wersji 10) i zignoruje takie skrypty. FF i Chrome nadal je tolerują, ale są szanse, że pewnego dnia odrzucą to jako niestandardowe.
źródło
Proceduralnie wstaw „skrypt skryptu” po „treści elementu” to „błąd analizy” według zalecanego procesu przez W3C . W „Konstrukcji drzewa” utwórz błąd i uruchom „ponownie tokenizuj”, aby przetworzyć tę zawartość. To jest jak dodatkowy krok. Tylko wtedy można uruchomić „Wykonanie skryptu” - patrz proces schematu .
Technicznie przez przeglądarkę jest to proces wewnętrzny, jak go zaznaczają i optymalizują.
Mam nadzieję, że komuś pomogłem.
źródło
Tak. Ale jeśli dodasz kod poza nim, najprawdopodobniej nie będzie to koniec świata, ponieważ większość przeglądarek to naprawi, ale nadal jest to zła praktyka.
źródło
Google faktycznie zaleca to w odniesieniu do „Optymalizacji CSS”. Zalecają wstawianie krytycznych stylów z zakładaniem i odkładanie reszty (plik css).
Przykład:
Zobacz: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
źródło
body
elementem. Ten artykuł Google nie radzi nikomu robić takich rzeczy.Nowoczesne przeglądarki przyjmują znaczniki skryptów w treści w następujący sposób:
Zasadniczo oznacza to, że skrypt zostanie załadowany po zakończeniu strony, co może być przydatne w niektórych przypadkach (a mianowicie manipulacji DOM). Jednak zdecydowanie zalecam wzięcie tego samego skryptu i umieszczenie go w tagu head z opcją „defer”, ponieważ da to ten sam efekt.
źródło
script
tagi miałyevent
atrybut, który można zdefiniować w celu ustalenia, kiedy należy przeanalizować skrypt. Musisz więcevent="load" event="DOMContentLoaded"
uruchomić skrypt po utworzeniu DOM lubevent="beforeunload"
wbeforeunload
zdarzeniu okna . Przykładem<script src="scripts/main.js" event="DOMContentLoaded"></script>
.