jquery 3.0 url.indexOf 错误
jquery 3.0 url.indexOf error
更新到 v3.0.0
后,我收到来自 jQuery 的以下错误。
jquery.js:9612 Uncaught TypeError: url.indexOf is not a function
知道为什么吗?
Jquery 3.0 有一些破坏性的变化,由于冲突删除了某些方法。您的错误很可能是由于这些更改之一造成的,例如删除 .load() 事件。
在 jQuery Core 3.0 Upgrade Guide
中阅读更多内容
要解决此问题,您需要重写代码以与 Jquery 3.0 兼容,否则您可以使用 JQuery Migrate plugin 来恢复已弃用的 and/or 已删除的 API 和行为。
更新所有调用load
函数的代码,如
$(window).load(function() { ... });
到
$(window).on('load', function() { ... });
jquery.js:9612 Uncaught TypeError: url.indexOf is not a function
此错误消息来自 jQuery.fn.load
函数。
我在申请时遇到了同样的问题。经过一番挖掘,我在 jQuery blog,
中找到了这条语句
.load, .unload, and .error, deprecated since jQuery 1.8, are no more.
Use .on() to register listeners.
我只是像上面那样改变我的 jQuery 对象调用 load
函数的方式。一切都按预期进行。
我在更新到最新版本的 JQuery 后遇到了同样的错误。因此,我更新了我正在处理的 jquery 文件,如前一个答案所述,所以它说 .on("load")
而不是 .load()
.
此修复不是很稳定,有时对我不起作用。因此,要解决此问题,您应该 更新 您的代码来自:
.load();
到
.trigger("load");
我从以下来源获得此修复:https://github.com/stevenwanderski/bxslider-4/pull/1024
更好的方法可能是像这样的 polyfill
jQuery.fn.load = function(callback){ $(window).on("load", callback) };
有了这个,您可以保持遗留代码不变。
如果你使用 webpack,一定要使用 script-loader。
@choz 回答是正确的方法。如果你有很多用途并且想确保它在任何地方都能正常工作而不需要改变你可以添加这些小 migration-snippet:
/* 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();
更新到 v3.0.0
后,我收到来自 jQuery 的以下错误。
jquery.js:9612 Uncaught TypeError: url.indexOf is not a function
知道为什么吗?
Jquery 3.0 有一些破坏性的变化,由于冲突删除了某些方法。您的错误很可能是由于这些更改之一造成的,例如删除 .load() 事件。
在 jQuery Core 3.0 Upgrade Guide
中阅读更多内容要解决此问题,您需要重写代码以与 Jquery 3.0 兼容,否则您可以使用 JQuery Migrate plugin 来恢复已弃用的 and/or 已删除的 API 和行为。
更新所有调用load
函数的代码,如
$(window).load(function() { ... });
到
$(window).on('load', function() { ... });
jquery.js:9612 Uncaught TypeError: url.indexOf is not a function
此错误消息来自 jQuery.fn.load
函数。
我在申请时遇到了同样的问题。经过一番挖掘,我在 jQuery blog,
中找到了这条语句.load, .unload, and .error, deprecated since jQuery 1.8, are no more. Use .on() to register listeners.
我只是像上面那样改变我的 jQuery 对象调用 load
函数的方式。一切都按预期进行。
我在更新到最新版本的 JQuery 后遇到了同样的错误。因此,我更新了我正在处理的 jquery 文件,如前一个答案所述,所以它说 .on("load")
而不是 .load()
.
此修复不是很稳定,有时对我不起作用。因此,要解决此问题,您应该 更新 您的代码来自:
.load();
到
.trigger("load");
我从以下来源获得此修复:https://github.com/stevenwanderski/bxslider-4/pull/1024
更好的方法可能是像这样的 polyfill
jQuery.fn.load = function(callback){ $(window).on("load", callback) };
有了这个,您可以保持遗留代码不变。 如果你使用 webpack,一定要使用 script-loader。
@choz 回答是正确的方法。如果你有很多用途并且想确保它在任何地方都能正常工作而不需要改变你可以添加这些小 migration-snippet:
/* 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();