jQuery 3.0 url.indexOf错误


210

jQuery更新到时,我收到了以下错误v3.0.0

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

知道为什么吗?


检查此内容,可能是它解决了您的问题。未捕获的TypeError:未定义不是indexOf上的函数
Nalin Aggarwal16年

4
这是引发错误的jQuery新版本。旧版本很好。
Kamrul

我现在也碰到了这一点:0
Feek

请声明答案。我认为很明显,我们有一个
Mladen Janjetovic,

Answers:


546

更新所有调用load函数的代码,例如,

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

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

jquery.js:9612未捕获的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 '18年

我在document.ready功能上使用了它,它的工作就像一个魅力。
好奇心

29

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

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

这样您就可以保持原有代码不变。如果您使用webpack,请确保使用脚本加载器。


非常感谢。我仍然有一个错误,James建议您使用.trigger进行此操作。jQuery.fn.load =函数(回调){$(window).trigger(“ load”,callback); };
rgfx

由第三方JS引起的惊人解决方案。另一个优点是它不需要降级,这将导致漏洞(在任何低于3的jquery版本中!)。
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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.