jQuery 3.0的url.indexOf错误

一旦它被更新到v3.0.0我正在从jQuery获得错误。

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

任何想法为什么?

更新所有调用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函数。 一切都按预期工作。

Jquery 3.0有一些突破性的变化,由于冲突,删除某些方法。 您的错误很可能是由于这些更改之一,如删除.load()事件。

阅读jQuery Core 3.0升级指南

要解决这个问题,您需要重写代码以与Jquery 3.0兼容,否则您可以使用JQuery Migrate插件来恢复已弃用和/或已删除的API和行为。

更好的方法可能是这样的一个polyfill

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

有了这个,你可以保持原有的代码不变。 如果你使用webpack,一定要使用script-loader。

更新到最新版本的JQuery后,我遇到了同样的错误。 因此,我更新了我正在处理的jquery文件,如之前的回答所述,所以它说.on("load")而不是.on("load") .load()

这个修复不是很稳定,有时它不适合我。 因此,要解决这个问题,你应该更新你的代码:

  .load(); 

  .trigger("load"); 

我从以下来源获得了此修复: https : //github.com/stevenwanderski/bxslider-4/pull/1024