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

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(){ ...});

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.


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>

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ó.


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.


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.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.