我得到以下错误从jQuery一旦它已更新到v3.0.0。
v3.0.0
jquery.js:9612 Uncaught TypeError: url.indexOf is not a function
知道为什么吗?
Jquery 3.0有一些突破性的变化,删除某些方法由于冲突。您的错误很可能是由于这些更改之一,例如删除了.load()事件。
在jQuery Core 3.0升级指南中阅读更多
要解决这个问题,你要么需要重写代码以与Jquery 3.0兼容,要么你可以使用JQuery迁移插件来恢复已弃用和/或已删除的api和行为。
更新所有调用load函数的代码,比如:
load
$(window).load(function() { ... });
来
$(window).on('load', function() { ... });
jquery.js:9612 Uncaught TypeError: url。indexOf不是一个函数
此错误信息来自jQuery.fn.load函数。
jQuery.fn.load
我在申请时也遇到了同样的问题。经过一番挖掘,我在jQuery的博客中找到了这个语句,
< p >。不再是. load, .unload和.error,自jQuery 1.8以来已弃用。 使用.on()注册监听器
我只是简单地改变我的jQuery对象调用load函数如上所示。一切都按照预期进行。
在更新到最新版本的JQuery后,我遇到了同样的错误。因此,我更新了我正在处理的jquery文件,如前所述,所以它说.on("load")而不是.load()。
.on("load")
.load()
这个修复不是很稳定,有时对我不起作用。因此,要解决这个问题,你应该更新你的代码从:
.load();
.trigger("load");
我从以下来源得到了这个修复:https://github.com/stevenwanderski/bxslider-4/pull/1024
更好的方法可能是像这样的填充
jQuery.fn.load = function(callback){ $(window).on("load", callback) };
有了这个,你可以保持遗留代码不变。 如果你使用webpack,一定要使用脚本加载器。< / p >
@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回答!
$image
const $image = $('img.image').load(function() { $(this).doSomething(); }); $image.doSomethingElseWithTheImage();