2013-11-22 7 views
6

Próbuję po raz pierwszy użyć frameworka Zurb Foundation 5 i otrzymałem ten błąd: "Uncaught TypeError: Layer musi być A foundation.min.js węzłów dokumentu: 8"Fundament 5 możliwy Błąd: Uncaught TypeError: Warstwa musi być węzłem dokumentu foundation.min.js: 8

stało się to dlatego, że miałem w tym:

<script type="text/javascript" src="libs/foundation.min.js"></script>

Kiedy przeniósł go do ciała, błąd zniknął.

Dlaczego? czy brakuje mi czegoś o javascript czy jest to błąd?

+1

Czytaj docs: http://foundation.zurb.com /docs/javascript.html to polecenie umieszczenia jquery i foundation przed znacznikiem body. –

+1

Przed znacznikiem treści *** zamykającej ***. Ale są inne opcje, jeśli jesteś zmuszony trzymać JS w głowie: patrz poniżej. – fny

Odpowiedz

8

To jest błąd, który został rozwiązany in a recent commit, który był merged into what will be v5.0.3. Po prostu dołącz to zatwierdzenie ręcznie lub poczekaj na wydanie wersji 5.0.3 i powinieneś być gotowy.

co się dzieje

Fundacji teraz inicjuje natychmiast z dowolnego miejsca załadowania pliku zamiast czekać na DOM załadować. Aby zwiększyć wydajność mobilną, Fundacja 5 osadza bibliotekę o nazwie FastClick i próbuje dołączyć ją do document.body podczas inicjalizacji, więc jeśli wykonasz JavaScript w <head /> przed renderowaniem <body />, FastClick zgłasza ten błąd.

Jeśli używasz Rails Turbolinks, Flask Turbolinks ani żadnego podobnego biblioteki, który zastępuje <body /> dynamicznie, trzeba zachować JS w <head />

2

Najprawdopodobniej plik html było coś takiego:

<!doctype html> 
<html> 
<head> 
<title>Title</title> 

<script src="../js/jquery.js"></script> 
<script src="../js/foundation.min.js"></script> 

</head> 
<body> 

<script> 
    $(document).foundation(); 
</script> 

</body> 
</html> 

i masz błąd jak:

Uncaught TypeError: Layer must be a document node 
Uncaught TypeError: Object [object Object] has no method 'foundation' 

trzeba przenieść <script> linię, która obejmuje foundation.js do części ciała, tuż przed innym znacznikiem skryptu. Jak to opisano w dokumentacji. Nie jest to błąd, ale jest to kwestia kolejności/wykonywania skryptów i zależności. Zobacz load and execute order of scripts i inne powiązane Q & A. A plik jquery.js należy dołączyć przed biblioteką foundation.js.

+0

Niezupełnie. Ciało było puste. –

Powiązane problemy