2013-11-22 11 views
6

Tôi đang cố gắng lần đầu tiên khuôn khổ Zurb Foundation 5 và tôi gặp lỗi này: "Loại lỗi không xác định: Lớp phải là một nút tài liệu foundation.min.js: 8"Nền tảng 5 lỗi có thể xảy ra: Loại lỗi không đúng: Lớp phải là một nút tài liệu foundation.min.js: 8

Điều này xảy ra bởi vì tôi đã có điều này trong:

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

Khi tôi chuyển nó vào cơ thể, các lỗi đã biến mất.

Tại sao? Tôi thiếu một cái gì đó về javascript hoặc nó là một lỗi?

+1

Đọc tài liệu: http://foundation.zurb.com /docs/javascript.html nó cho bạn biết đặt jquery và nền tảng trước thẻ body. –

+1

Trước thẻ đóng *** body. Nhưng có những lựa chọn khác nếu bạn buộc phải giữ JS trong đầu: xem bên dưới. – fny

Trả lời

8

Đây là lỗi lỗi đã được giải quyết in a recent commitmerged into what will be v5.0.3. Chỉ cần bao gồm cam kết đó theo cách thủ công hoặc chờ cho đến khi bản phát hành v5.0.3 và bạn nên làm tốt.

Tình hình diễn

Foundation tại khởi ngay từ bất cứ nơi nào bạn tải các tập tin thay vì chờ đợi cho DOM để tải. Để tăng hiệu suất di động, Foundation 5 nhúng một thư viện có tên là FastClick và cố gắng đính kèm nó vào document.body khi khởi tạo, vì vậy nếu bạn thực thi JavaScript trong <head /> trước khi <body /> hiển thị, FastClick sẽ ném lỗi đó.

Nếu bạn đang sử dụng Rails Turbolinks, Flask Turbolinks, hoặc bất kỳ thư viện tương tự mà thay thế <body /> động, bạn sẽ cần phải giữ JS của bạn trong <head />

2

lẽ Hầu hết các tập tin html của bạn là một cái gì đó như thế này:

<!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> 

Và bạn đã nhận lỗi như:

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

Bạn phải di chuyển <script> dòng trong đó bao gồm foundation.js để phần cơ thể, ngay trước thẻ tập lệnh khác. Vì nó được mô tả trong tài liệu. Nó không phải là một lỗi nhưng nó là một vấn đề đặt hàng/thực hiện kịch bản và phụ thuộc. Xem load and execute order of scripts và các liên kết khác Q & A. Và jquery.js phải được đưa vào trước thư viện foundation.js.

+0

Không thực sự. Cơ thể trống rỗng. –

Các vấn đề liên quan