237

jQuery 更新为v3.0.0.

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

任何想法为什么?

4

5 回答 5

609

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

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

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

jquery.js:9612 Uncaught TypeError: url.indexOf 不是函数

此错误消息来自jQuery.fn.load函数。

我在我的应用程序中遇到了同样的问题。经过一番挖掘,我在jQuery 博客中找到了这个语句,

自 jQuery 1.8 起已弃用的 .load、.unload 和 .error 不再. 使用 .on() 注册监听器。

我只是简单地改变我的 jQuery 对象调用上述load函数的方式。一切都按预期工作。

于 2016-06-20T06:31:41.870 回答
37

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

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

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

于 2016-12-21T11:46:54.083 回答
16

Jquery 3.0 有一些重大更改,由于冲突而删除了某些方法。您的错误很可能是由于这些更改之一,例如删除 .load() 事件。

阅读更多jQuery Core 3.0 升级指南

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

于 2016-06-20T06:12:21.443 回答
5

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

此修复程序不是很稳定,有时对我不起作用。因此,要解决此问题,您应该从以下位置更新您的代码:

    .load();

    .trigger("load");

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

于 2016-08-12T13:30:14.273 回答
0

@choz 答案是正确的方法。如果您有很多用途并希望确保它在任何地方都能正常工作而无需更改,您可以添加这些小的迁移片段:

/* Migration jQuery from 1.8 to 3.x */
jQuery.fn.load = function (callback) {
    var el = $(this);

    el.on('load', callback);

    return el;
};

在这种情况下,您在其他节点上没有错误,例如$image@Korsmakolnikov 回答中的错误!

const $image = $('img.image').load(function() {
  $(this).doSomething();
});

$image.doSomethingElseWithTheImage();
于 2020-09-04T11:32:24.630 回答