Loại Uncaught LoạiError: a.indexOf không phải là một chức năng Lỗi khi mở dự án nền tảng mới


250

Tôi đã tạo một dự án Foundation 5 mới thông qua bash foundation new my-project. Khi tôi mở tệp index.html trong Chrome, một Uncaught TypeError: a.indexOf is not a functionlỗi được hiển thị trong bảng điều khiển, bắt nguồn từ jquery.min.js:4.

Tôi đã tạo dự án theo các bước trên trang web nền tảng, nhưng dường như tôi không thể thoát khỏi lỗi này. Foundation và jQuery trông giống như chúng được bao gồm và liên kết chính xác trong tệp index.html và tệp app.js được liên kết bao gồm$(document).foundation();

Có ai biết những gì gây ra lỗi này? và giải pháp có thể là gì?

Ảnh chụp màn hình thông báo lỗi bảng điều khiển

Câu trả lời:


819

Lỗi này có thể được gây ra bởi jQuery sự kiện bí danh như .load(), .unload()hoặc .error()rằng tất cả đang bị phản đối kể từ jQuery 1.8 . Tra cứu các bí danh này trong mã của bạn và thay thế chúng bằng .on()phương thức thay thế. Ví dụ: thay thế đoạn trích không dùng sau:

$(window).load(function(){...});

với những điều sau đây:

$(window).on('load', function(){ ...});

3
Tôi đã không có nó với 2.2.1 @User, nhưng ngay khi tôi chuyển sang 3.3.1, tôi đã phải thực hiện thay đổi này.
Codemonkey

@DanielLlano bạn tiết kiệm trong ngày của tôi
Owaiz Yusufi

1
CÁi này đã sửa nó giúp tôi.
Radagast the Brown

@Crine $(function() {});dành cho tài liệu đã sẵn sàng, điều này không giống với sự kiện tải cửa sổ. Ngoài ra, doc sẵn sàng thường kích hoạt trước khi tải cửa sổ.
Robert

Xin chào người đàn ông, bạn có thể cho tôi biết tại sao? trước khi nó hoạt động với phiên bản 1.12.3 và nó đã ngừng hoạt động khi tôi chuyển sang 3.4.1
Armando Marques Sobrinho

35

Lỗi này thường do các phiên bản jQuery không tương thích . Tôi gặp lỗi tương tự với một foundation 6kho lưu trữ. Kho lưu trữ của tôi đã được sử dụngjQuery 3 , nhưng nền tảng đòi hỏi một phiên bản trước đó. Sau đó tôi đã thay đổi nó và nó hoạt động.

Nếu bạn nhìn vào phiên bản jQuery được yêu cầu bởi các phụ thuộc của nền tảng 5 thì nó tuyên bố"jquery": "~2.1.0" .

Bạn có thể xác nhận rằng bạn đang tải phiên bản chính xác của jQuery không?

Tôi hi vọng cái này giúp được.


29

Vui lòng thêm bên dưới Plugin Di chuyển jQuery

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>

Tôi xác nhận rằng điều này đã khắc phục vấn đề.
Morad Hamdy

17

Tôi cũng phải đối mặt với vấn đề này Tôi đã sử dụng jquery.poptrox.min.jsđể xuất hiện và phóng to hình ảnh và tôi đã nhận được một lỗi cho biết:

Loại Uncaught LoạiError: a.indexOf không phải là một lỗi chức năng .

Điều này là do indexOfkhông được hỗ trợ trong 3.3.1/jquery.min.jsmột sửa chữa đơn giản cho việc này là thay đổi nó thành phiên bản cũ2.1.0/jquery.min.js .

CÁi này đã sửa nó giúp tôi.


2
Tôi chuyển sang 3.2.1 đến 2.1.0 và nó đã hoạt động. Điều này làm việc cho tôi.
Siddharth

Chào mừng bạn @Siddharth
Harshit Pant

1
không bao giờ quay trở lại các phiên bản vì nó có thể dẫn đến các vấn đề bảo mật lớn.
Ajay Takur

1
Nếu đó là trường hợp: bạn có thể thay thế mã dưới đây $ (window) .load (function () {...}); với các mục sau: $ (window) .on ('load', function () {...}); Điều đó cũng sẽ làm việc! :)
Harshit Pant

13

Một trong những lý do có thể là khi bạn tải jQuery TWICE , như:

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>

Vì vậy, hãy kiểm tra mã nguồn của bạn và loại bỏ tải jQuery trùng lặp.


2
Nó xảy ra với wordpress, tải phiên bản của chính nó, nếu bạn cũng đang tải phiên bản jquery về phía bạn.
Olou

1

Tôi đang sử dụng jQuery 3.3.1và tôi đã nhận được cùng một lỗi, trong trường hợp của tôi, URL là mộtObject một chuỗi so với một chuỗi.

Điều gì đã xảy ra là, tôi đã lấy URL = window.location- mà trả lại một đối tượng. Khi tôi đã thay đổi nó thành window.location.href- nó hoạt động với e.indexOflỗi.


0

Tôi đã giải quyết điều này bằng cách cài đặt phiên bản chính xác Jquerymà dự án của tôi yêu cầu sử dụngnpm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.