打开新的基础项目时出现“ Uncaught TypeError:a.indexOf不是函数”错误


250

我使用bash通过bash创建了一个新的Foundation 5项目foundation new my-project。当我在Chrome中打开index.html文件时,Uncaught TypeError: a.indexOf is not a function控制台中会显示错误,该错误起源于jquery.min.js:4

我按照基础站点上的步骤创建了项目,但是似乎无法摆脱此错误。Foundation和jQuery看起来像它们被包含并正确链接到index.html文件中,而链接的app.js文件包括$(document).foundation();

有谁知道是什么原因导致此错误?有什么解决方案?

控制台错误消息截图

Answers:


819

此错误可能是由jQuery事件别名引起的.load().unload()或者自jQuery 1.8以来.error()全部弃用 。在代码中查找这些别名,然后将其替换为方法。例如,替换以下不推荐使用的摘录:.on()

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

具有以下内容:

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

3
我在2.2.1 @User中没有它,但是一旦切换到3.3.1,我就必须进行更改。
Codemonkey

@DanielLlano,您救了我的一天
Owaiz Yusufi '18 -10-24

1
这为我解决了。
布朗·拉达加斯特

@Crine $(function() {});用于准备文档,这与窗口加载事件不同。此外,doc ready通常会在加载窗口之前触发。
罗伯特·

你好,你能告诉我为什么吗?在使用1.12.3版本之前,当我迁移到3.4.1版本时它停止工作
Armando Marques Sobrinho,

35

此错误通常是由不兼容的 jQuery版本引起的。我在foundation 6存储库中遇到了相同的错误。我的存储库正在使用jQuery 3,但是Foundation需要较早的版本。然后,我对其进行了更改,然后它起作用了。

如果您查看基础5依赖项所需的jQuery版本,它将指出"jquery": "~2.1.0"

您可以确认您正在加载正确版本的jQuery吗?

我希望这有帮助。


29

请在下面添加jQuery Migrate插件

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/jquery-migrate-1.4.1.min.js"></script>

我确认这已解决问题。
莫拉德·哈米

17

我也面临这个问题。我在用jquery.poptrox.min.js用于图像弹出和缩放,但收到一条错误消息:

“未捕获的TypeError:a.indexOf不是函数”错误。

这是因为 indexOf不支持此功能,3.3.1/jquery.min.js因此一个简单的解决方法是将其更改为旧版本2.1.0/jquery.min.js

这为我解决了。


2
我从3.2.1迁移到2.1.0,并成功了。这对我有用。
Siddharth

欢迎您!@Siddharth
Harshit Pant

1
永远不要回退到版本,因为这可能会导致严重的安全问题。
Ajay Takur

1
在这种情况下:您可以替换下面的代码$(window).load(function(){...}); 具有以下内容:$(window).on('load',function(){...}); 那也可以!:)
Harshit Pant

13

可能的原因之一是当您加载jQuery TWICE时,例如:

<script src='..../jquery.js'></script>
....
....
....
....
....
<script src='......./jquery.js'></script>

因此,请检查您的源代码并删除重复的jQuery负载。


2
如果您还同时加载了jQuery版本,则wordpress会发生这种情况,并加载其自己的版本。
Olou

1

我正在使用jQuery 3.3.1,但收到相同的错误,在我的情况下,URL是一个Objectvs字符串。

发生的是,我拿了URL = window.location-返回了一个对象。一旦将其更改为window.location.href-它就不会e.indexOf出现错误。


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.