Error "Error de tipo no detectado: a.indexOf no es una función" al abrir un nuevo proyecto de base

250

He creado un nuevo proyecto de Foundation 5 a través de bash, con foundation new my-project. Cuando abro el archivo index.html en Chrome, Uncaught TypeError: a.indexOf is not a functionse muestra un error en la consola, que se origina en jquery.min.js:4.

Creé el proyecto siguiendo los pasos en el sitio de la fundación, pero parece que no puedo deshacerme de este error. Parece que Foundation y jQuery están incluidos y vinculados correctamente en el archivo index.html, y el archivo app.js vinculado incluye$(document).foundation();

¿Alguien sabe qué está causando este error? ¿Y qué solución podría ser?

Captura de pantalla del mensaje de error de la consola

FreddieE
fuente

Respuestas:

820

Este error puede deberse a los alias de eventos jQuery como .load(), .unload()o .error()que todos están en desuso desde jQuery 1.8 . Busque estos alias en su código y reemplácelos con el .on()método. Por ejemplo, reemplace el siguiente extracto en desuso:

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

con lo siguiente:

$(window).on('load', function(){ ...});
Daniel Llano
fuente
3
No lo tenía con 2.2.1 @User, pero tan pronto como cambié a 3.3.1 tuve que hacer este cambio.
Codemonkey
@DanielLlano me salvas el día
Owaiz Yusufi
1
Esto me lo arregló.
Radagast the Brown
@Crine $(function() {});es para documentos listos, que no es lo mismo que el evento de carga de la ventana. Además, el documento listo a menudo se dispara antes de cargar la ventana.
Robert
Hola hombre, ¿podrías decirme por qué? antes de que funcionara con la versión 1.12.3 y dejó de funcionar cuando migré a 3.4.1
Armando Marques Sobrinho
35

Este error a menudo es causado por versiones incompatibles de jQuery. Encontré el mismo error con un foundation 6repositorio. Mi repositorio estaba usando jQuery 3, pero la base requiere una versión anterior. Luego lo cambié y funcionó.

Si observa la versión de jQuery requerida por las dependencias de Foundation 5 que indica "jquery": "~2.1.0".

¿Puede confirmar que está cargando la versión correcta de jQuery?

Espero que esto ayude.

shaune
fuente
30

Agregue a continuación el complemento 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>
Govarthanan Venunathan
fuente
1
Confirmo que esto ha solucionado el problema.
Morad Hamdy
17

También enfrenté este problema. Estaba usando jquery.poptrox.min.jspara hacer estallar y hacer zoom en la imagen y recibí un error que decía:

Error " Error de tipo no detectado: a.indexOf no es una función" .

Esto se debe a que indexOfno era compatible, por 3.3.1/jquery.min.jslo que una solución simple para esto es cambiarlo a una versión anterior 2.1.0/jquery.min.js.

Esto me lo arregló.

Harshit Pant
fuente
2
Me mudé a 3.2.1 a 2.1.0 y funcionó. Esto funcionó para mí.
Siddharth
Bienvenidos ! @Siddharth
Harshit Pant
1
nunca vuelva a las versiones, ya que puede dar lugar a problemas de seguridad importantes.
Ajay Takur
1
Si ese es el caso: puede reemplazar el siguiente código $ (ventana) .load (function () {...}); con lo siguiente: $ (ventana) .on ('load', function () {...}); eso también funcionaría! :)
Harshit Pant
13

Una de las posibles razones es cuando carga jQuery TWICE , como:

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

Por lo tanto, verifique su código fuente y elimine la carga duplicada de jQuery.

T.Todua
fuente
2
Ocurre con wordpress, cargando su propia versión, si también está cargando una versión jquery de su lado.
Olou
1

Estoy usando jQuery 3.3.1y recibí el mismo error, en mi caso, la URL era un Objectvs una cadena.

Lo que sucedió fue que tomé, lo que me URL = window.locationdevolvió un objeto. Una vez que lo cambié, window.location.hreffuncionó sin el e.indexOferror.

Ricky Levi
fuente
0

Resolví esto instalando la versión correcta Jqueryque mi proyecto requería usandonpm

Ntiyiso Rikhotso
fuente