ข้อผิดพลาด jquery 3.0 url.indexOf


210

ฉันได้รับข้อผิดพลาดต่อไปนี้จาก jQuery v3.0.0เมื่อมันได้รับการปรับปรุง

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

ความคิดใด ๆ ทำไม?


ตรวจสอบสิ่งนี้อาจช่วยแก้ปัญหาของคุณUncaught TypeError: ไม่ได้กำหนดไม่ได้เป็นฟังก์ชั่นใน indexOf
Nalin Aggarwal

4
มันเป็น jQuery รุ่นใหม่ที่ยิงข้อผิดพลาด เวอร์ชั่นเก่าใช้ได้
Kamrul

ฉันกำลังทำงานในสิ่งนี้ด้วยเช่นกัน: 0
Feek

กรุณาประกาศคำตอบ ฉันคิดว่ามันชัดเจนว่าเรามีหนึ่ง
Mladen Janjetovic

คำตอบ:


546

อัปเดตรหัสของคุณทั้งหมดที่เรียกloadใช้ฟังก์ชันเช่น

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

ถึง

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

jquery.js: 9612 Uncaught TypeError: url.indexOf ไม่ใช่ฟังก์ชัน

ข้อความผิดพลาดนี้มาจากjQuery.fn.loadฟังก์ชั่น

ฉันเจอปัญหาเดียวกันในใบสมัครของฉัน หลังจากที่บางขุดผมพบว่าคำสั่งนี้ในjQuery บล็อก ,

.load, .unload และ .error เลิกใช้แล้วตั้งแต่ jQuery 1.8 ไม่มีอีกแล้ว ใช้. on () เพื่อลงทะเบียนผู้ฟัง

ฉันแค่เปลี่ยนวิธีการที่วัตถุ jQuery ของฉันเรียกใช้loadฟังก์ชันดังกล่าวข้างต้น และทุกอย่างทำงานตามที่คาดไว้


40
มันบ้าพวกเขาไม่ได้เตือนเลิกขนาดใหญ่บนหน้านี้ในเอกสารของพวกเขาapi.jquery.com/load
James McMahon

3
ฉันพบว่านี่เป็นปัญหาที่แน่นอนที่ฉันมีเมื่อทำการวางรากฐาน zurbs ใน aurelia
samuel.molinski

5
แดกดันชนิดเดียวที่ฉันยังทำอยู่ก็คือรหัสข้อผิดพลาดที่ทำให้ตัวเองแตก: - /
Simon_Weaver

1
ขอบคุณสำหรับสิ่งนี้คำตอบที่สมบูรณ์
KCarnaille

ฉันใช้มันในdocument.readyฟังก์ชั่นและมันก็ทำงานเหมือนมีเสน่ห์
อยากรู้อยากเห็น

29

วิธีที่ดีกว่าอาจเป็น polyfill เช่นนี้

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

ด้วยวิธีนี้คุณสามารถปล่อยให้รหัสเดิมไม่มีการแตะต้อง หากคุณใช้ webpack ต้องแน่ใจว่าใช้สคริปต์โหลดเดอร์


ขอบคุณมาก. ฉันยังพบข้อผิดพลาด James แนะนำให้คุณใช้. trigger ใช้งานได้ jQuery.fn.load = ฟังก์ชั่น (โทรกลับ) {$ (หน้าต่าง). trigger ("load", callback); };
rgfx

ทางออกที่น่าอัศจรรย์เมื่อมันเกิดจากบุคคลที่สาม JS ข้อดีอีกอย่างคือมันไม่จำเป็นต้องมีการลดระดับซึ่งจะทำให้เกิดช่องโหว่ (ใน jQuery เวอร์ชันต่ำกว่า 3!)
Mateusz

คำตอบนี้คือราชา
Ntiyiso Rikhotso

16

Jquery 3.0 มีการเปลี่ยนแปลงบางอย่างที่ลบวิธีการบางอย่างเนื่องจากความขัดแย้ง ข้อผิดพลาดของคุณน่าจะเกิดจากการเปลี่ยนแปลงอย่างใดอย่างหนึ่งเช่นการลบเหตุการณ์. load ()

อ่านเพิ่มเติมในคู่มือการอัพเกรด jQuery Core 3.0

ในการแก้ไขปัญหานี้คุณต้องเขียนรหัสใหม่เพื่อให้เข้ากันได้กับ Jquery 3.0 หรืออื่น ๆ คุณสามารถใช้ปลั๊กอิน JQuery Migrateซึ่งคืนค่า API และพฤติกรรมที่เลิกใช้แล้วและ / หรือลบออก


4

ฉันพบข้อผิดพลาดเดียวกันหลังจากอัปเดตเป็น JQuery เวอร์ชันล่าสุด ดังนั้นผมจึงมีการปรับปรุงแฟ้ม jQuery ที่ผมกำลังทำงานอยู่ตามที่ระบุไว้ในคำตอบก่อนหน้าดังนั้นจึงกล่าวแทน.on("load").load()

การแก้ไขนี้ไม่เสถียรมากและบางครั้งก็ไม่ได้ผลสำหรับฉัน ดังนั้นเพื่อแก้ไขปัญหานี้คุณควรอัปเดตรหัสของคุณจาก:

    .load();

ถึง

    .trigger("load");

ฉันได้รับการแก้ไขนี้จากแหล่งต่อไปนี้: https://github.com/stevenwanderski/bxslider-4/pull/1024

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.