jquery 3.0 url.indexOf lỗi


210

Tôi nhận được lỗi sau từ jQuery khi nó đã được cập nhật v3.0.0.

jquery.js:9612 Uncaught TypeError: url.indexOf is not a function

Bất cứ ý tưởng tại sao?


kiểm tra cái này, có thể nó sẽ giải quyết vấn đề của bạn Uncaught TypeError: Không xác định không phải là một chức năng trên indexOf
Nalin Aggarwal

4
Đây là phiên bản mới của jQuery gây ra lỗi. Phiên bản cũ là tốt.
Kamrul

tôi cũng đang chạy vào đây ngay bây giờ: 0
Feek

Hãy khai báo câu trả lời. Tôi nghĩ rõ ràng chúng ta có một
Mladen Janjetovic

Câu trả lời:


546

Cập nhật tất cả mã của bạn gọi loadchức năng như,

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

Đến

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

jquery.js: 9612 Uncaught TypeError: url.indexOf không phải là một chức năng

Thông báo lỗi này xuất phát từ jQuery.fn.loadchức năng.

Tôi đã gặp vấn đề tương tự trên ứng dụng của tôi. Sau khi đào bới, tôi tìm thấy tuyên bố này trong blog jQuery ,

.load, .unload và .error, không dùng nữa kể từ jQuery 1.8, không còn nữa . Sử dụng .on () để đăng ký người nghe.

Tôi chỉ đơn giản là thay đổi cách các đối tượng jQuery của tôi gọi loadhàm như trên. Và mọi thứ hoạt động như mong đợi.


40
Thật điên rồ khi họ không có một cảnh báo không được chấp nhận lớn trên trang này trong tài liệu của họ, api.jquery.com/load .
James McMahon

3
Tôi thấy đây là vấn đề chính xác mà tôi gặp phải khi bootstrapping nền tảng thành aurelia
samuel.molinski

5
thật là mỉa mai rằng nơi duy nhất tôi thực sự vẫn đang làm điều này là trong mã xử lý lỗi mà sau đó đã tự phá vỡ: - /
Simon_Weaver

1
Cảm ơn vì điều này, câu trả lời hoàn hảo
KCarnaille

Tôi đã sử dụng nó trong document.readychức năng và nó hoạt động như một bùa mê.
Tò mò

29

Cách tiếp cận tốt hơn có thể là một polyfill như thế này

jQuery.fn.load = function(callback){ $(window).on("load", callback) };

Với điều này, bạn có thể để lại mã di sản không bị ảnh hưởng. Nếu bạn sử dụng webpack, hãy chắc chắn sử dụng trình tải tập lệnh.


Cám ơn rất nhiều. Tôi vẫn gặp lỗi, James đề nghị bạn sử dụng .trigger này hoạt động. jQuery.fn.load = function (gọi lại) {$ (window) .trigger ("load", gọi lại); };
rgfx

Giải pháp tuyệt vời khi nó gây ra bởi bên thứ ba JS. Một điểm cộng nữa là nó không yêu cầu hạ cấp, điều này sẽ gây ra lỗ hổng (trong bất kỳ phiên bản jquery nào dưới 3!).
Mateusz

Câu trả lời này là vua
Ntiyiso Rikhotso

16

Jquery 3.0 có một số thay đổi đột phá loại bỏ các phương thức nhất định do xung đột. Lỗi của bạn rất có thể là do một trong những thay đổi này, chẳng hạn như loại bỏ sự kiện .load ().

Đọc thêm trong Hướng dẫn nâng cấp jQuery Core 3.0

Để khắc phục điều này, bạn cần phải viết lại mã để tương thích với Jquery 3.0 hoặc nếu không, bạn có thể sử dụng plugin JQuery Migrate để khôi phục các hành vi và API bị loại bỏ và / hoặc bị loại bỏ.


4

Tôi đã gặp lỗi tương tự sau khi cập nhật lên phiên bản JQuery mới nhất. Vì vậy, tôi đã cập nhật tệp jquery mà tôi đang làm việc, như đã nêu trong một câu trả lời trước đó, vì vậy nó đã nói .on("load")thay vì .load().

Khắc phục sự cố này không ổn định và đôi khi nó không hiệu quả với tôi. Do đó, để khắc phục sự cố này, bạn nên cập nhật mã của mình từ:

    .load();

đến

    .trigger("load");

Tôi đã sửa lỗi này từ nguồn sau: https://github.com/stevenwanderski/bxslider-4/pull/1024

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.