javascript - not - Error de referencia no capturado: $ no está definido?
title html (30)
¿Cómo es que este código arroja una
Referencia no detectada Error: $ no está definido
cuando estaba bien antes?
$(document).ready(function() {
$(''#tabs > ul'').tabs({ fx: { opacity: ''toggle'' } });
$(''#featuredvid > ul'').tabs();
});
Los resultados en pestañas ya no se cierran.
Se hace referencia a jQuery en el encabezado:
<script language="JavaScript" type="text/javascript" src="<?php echo get_option(''siteurl'') ?>/js/sprinkle.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option(''siteurl'') ?>/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="<?php echo get_option(''siteurl'') ?>/js/jquery-ui-personalized-1.5.2.packed.js"></script>
Agregue la biblioteca antes de iniciar el script. Puede agregar cualquiera de estos siguientes CDN para iniciarlo.
Google:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
Microsoft
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script>
Jquery
Si desea alguna otra versión de cdn de Jquery, verifique este link .
Después de este:
<script type="text/javascript">
$(function(){
//your stuff
});
or
$(document).ready(function(){
//your stuff
});
</script>
WordPress:
<script type="text/javascript">
var $ = jQuery;
jQuery(document).ready(function($){
//your stuff
});
</script>
Aquí está el peor de los casos:
Todo parecía perfecto. Después de pasar un par de horas, me di cuenta de que el archivo jquery que se agrega en la posición correcta era en realidad un archivo con contenido vacío.
Bueno, mi problema era diferente: era el modelo Document Security en Chrome .
Mirando las respuestas aquí, era obvio que de alguna manera no estaba cargando mis archivos jquery antes de llamar a las funciones $(document).ready()
etc. Sin embargo, todos estaban en las posiciones correctas.
En mi caso, esto se debió a que estaba accediendo al contenido a través de una conexión HTTPS segura, mientras que la página intentaba descargar los datos alojados en CDN de google, etc. La solución fue almacenarlos localmente y luego incluirlos directamente en lugar de hacerlo desde el CDN cada vez.
Edición : la otra forma de hacerlo es enlazar a todas las cosas alojadas en CDN como https: // en lugar de http: //; entonces el modelo no se queja.
Debes poner las referencias a los scripts de jquery primero.
<script language="JavaScript" type="text/javascript" src="/js/jquery-1.2.6.min.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/jquery-ui-personalized-1.5.2.packed.js"></script>
<script language="JavaScript" type="text/javascript" src="/js/sprinkle.js"></script>
Doh! Tuve citas mixtas en mis etiquetas que causaron que la referencia jquery se rompiera. Hacer una inspección en Chrome me permitió ver que el archivo no estaba correctamente vinculado.
El archivo fuente jquery-1.2.6.min.js
no se llama. El comando jQuery $()
se ejecuta antes que <..src=''jquery-1.2.6.min.js''>
.
Ejecute <.. src="/js/jquery-1.2.6.min.js..">
al principio y asegúrese de que la ruta src sea correcta, luego ejecute el comando jquery
$(document).ready(function()
El error también se producirá en los siguientes dos escenarios.
- Falta el elemento @section scripts en el archivo HTML
- Error al acceder a los elementos DOM. Por ejemplo, el acceso al elemento DOM se menciona como $ ("js-toggle") en lugar de $ (". Js-toggle"). En realidad, falta el periodo.
Por lo tanto, hay 3 cosas que deben seguirse: verifique que se agreguen los scripts requeridos, verifique si se agregan en el orden requerido y los terceros errores de sintaxis en su Java Script.
El problema de raíz es un ReferenceError
. MDN indica que un bloque try
/ catch
es la herramienta adecuada para el trabajo. En mi caso, recibía un error de referencia no capturado para un sdk / library de pago. Lo de abajo me funciona.
try {
var stripe = Stripe(''pk_test_---------'');
} catch (e) {
stripe = null;
}
if(stripe){
//we are good to go now
}
Obviamente, la solución es cargar cualquier SDK / biblioteca, por ejemplo, jQuery, antes de llamar a sus métodos, pero el try
/ catch
mantiene su JavaScript compartido para evitar errores en caso de que ejecute ese script compartido en una página que no carga ninguna biblioteca. se utiliza en un subconjunto de páginas.
En mi caso olvidé incluir esto:
<script src ="jquery-2.1.1.js"></script>
Anteriormente estaba incluyendo solo jquery-mobile que estaba causando este error.
En mi caso, estaba poniendo mi archivo .js
antes del enlace del script jQuery, y el archivo .js
después del enlace del script jQuery resolvió mi problema.
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="exponential.js"></script>
En mi caso, fue un error tipográfico, olvidé una barra invertida y estaba haciendo referencia a la fuente incorrectamente.
Antes de src="/scripts/jquery.js"
Después de src="scripts/jquery.js"
En mi caso, tuve este error de referencia ya que el orden de las llamadas de script era incorrecto. Resuelto eso cambiando el orden:
<script src="js/index.js"></script>
<script src="js/jquery-1.10.2.js"></script>
a
<script src="js/jquery-1.10.2.js"></script>
<script src="js/index.js"></script>
Está llamando a la función ready antes de que se incluya el jQuery JavaScript. Referencia jQuery primero.
Esto es lo que me lo resolvió. Originalmente, fui a Google, copié y pegué su fragmento de código sugerido para jQuery en su página de CDN:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
El fragmento no incluye HTTP:
o HTTPS:
en el atributo src
pero mi navegador, Firefox, lo necesitaba, así que lo cambié a:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Entonces funcionó.
Esto me sucedió antes.
La razón fue que estoy conectando Android a una vista web con un JS. Y envié un parámetro sin comillas.
js.sayHello(hello);
y cuando lo cambié a
js.sayHello(''hello'');
funcionó.
Esto también puede suceder, si hay un problema de red. Lo que significa que, aunque los "scripts de jquery" están en su lugar, y se incluyen antes del uso, ya que los jquery-scripts no están disponibles, al momento de cargar la página, las definiciones de "$" se tratan como "referencias indefinidas".
PARA PROPÓSITOS DE PRUEBAS / DEBUGAS: Puede intentar acceder a la URL "jquery-script" en el navegador. Si es accesible, su página debería cargarse correctamente, de lo contrario, mostrará dicho error (u otros errores relevantes del script). Ejemplo: http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js debe estar accesible, en el navegador (o en las posturas de contexto del navegador).
Tuve un problema similar, en el que pude cargar la página html (usando scripts) en mi navegador de Windows-host, pero no pude cargar en vm-ubuntu. Resolviendo el problema de la red, resolví el problema.
Falta el archivo JavaScript, por lo que se produjo este error. Solo agrega el archivo JavaScript dentro de la etiqueta <head>
. Vea el ejemplo:
<script src="js/sample.js" type="text/javascript"></script>
<link href="css/sample.css" rel="stylesheet" type="text/css" />
o agregue el siguiente código en la etiqueta:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
Mordido por esto una vez más, faltan enlaces de fuente de biblioteca Bibliotecas alojadas en Google Enlace similar
Ok, admito que esta fue una cosa realmente tonta que me pasó una vez. Modifiqué la etiqueta de secuencia de comandos para señalar el contenido correcto y cambié el orden de secuencia de comandos para que fuera la correcta en el editor ... pero me olvidé por completo de guardar el cambio; problemas pueden suceder.
Por extraño que parezca, mi problema venía de PHP.
Una llamada a la API REST estaba fallando y luego se estaba interrumpiendo la carga de las bibliotecas. Dado que la falla fue de la llamada REST, no me estaba dando un error de compilación de php.
Guarde esto como una opción también, si cargar jquery parece estar bien.
Probablemente soy la única persona que tuvo mi tipo de problema, pero de todos modos lo descartaré. Quería intentar que mi script fuera asíncrono solo por diversión. Luego lo olvidé y cuando salí en vivo el archivo [personalizado] .js solo se cargó el 50% del tiempo antes de jQuery.js.
Así que cambié
<script async src="js/script.js"></script>
a
<script src="js/script.js"></script>
:)
Si está en wordpress, podría ser necesario cambiar
$(document).ready(function() {
a
jQuery(document).ready(function($){
o agregar
var $ = jQuery;
antes de
$(document).ready(function() {
Si está haciendo esto en .Net y hace referencia al archivo de secuencia de comandos correctamente y jQuery se ve bien, asegúrese de que sus usuarios tengan acceso al archivo de secuencia de comandos. El proyecto en el que estaba trabajando (un compañero de trabajo) tenía su web.config que negaba el acceso a usuarios anónimos. La página en la que estaba trabajando era accesible para usuarios anónimos, por lo que no tenían acceso al archivo de script. Se colocó lo siguiente en web.config y todo estaba correcto en el mundo:
<location path="Scripts">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Si su secuencia de comandos personalizada se carga antes de que se cargue el complemento jQuery en el navegador, entonces puede ocurrir este tipo de problema. Por lo tanto, siempre mantenga su propio código JavaScript o jQuery después de llamar al complemento jQuery, por lo que la solución para esto es:
Primero agregue el enlace al archivo jQuery alojado en GoogleApis o en un archivo local jQuery que descargará de http://jquery.com/download/ y alojará en su servidor:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
o cualquier plugin para jQuery. Luego ponga su código o enlace de archivo de script personalizado:
<script src="js/custom.js" type="text/javascript"></script>
Tuve este problema, cuando estaba navegando por Internet a través de mi punto de acceso móvil. también estaba comprimiendo imágenes y agregó la siguiente secuencia de comandos en la parte inferior de la etiqueta del cuerpo
<script language="javascript"><!--
bmi_SafeAddOnload(bmi_load,"bmi_orig_img");//-->
</script>
Cuando me conecté a una conexión wifi adecuada, parece que todo funciona para mí. Espero que esto ayude a alguien.
Tuve exactamente el mismo problema y ninguna de las soluciones anteriores me ayudó. sin embargo, solo vinculé los archivos .css después de que los archivos .js y el problema desaparecieran milagrosamente. espero que esto ayude.
Tuve un problema similar y fue porque faltaba un cierre en un enlace de hoja de estilo.
Tuve un problema similar. Mi servidor de prueba funcionaba bien con "http". Sin embargo falló en la producción que tenía SSL.
Así, en la producción, agregué "HTPPS" en lugar de "HTTP" y en la prueba, mantuve tal como es "HTTP".
Prueba:
wp_register_script (''jquery'', '' http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js '', array (), null, false);
wp_register_script (''custom-script'', plugins_url (''/js/custom.js'', FILE ), array (''jquery''));
Producción:
wp_register_script (''jquery'', '' https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js '', array (), null, false);
wp_register_script (''custom-script'', plugins_url (''/js/custom.js'', FILE ), array (''jquery''));
Espero que esto ayude a alguien que está trabajando en wordpress.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="local_xxx.js"></script>
Tengo un problema similar, y sabes qué, es porque la red se desconecta cuando realizo la prueba en el dispositivo webview de Android y no me doy cuenta, y el js local no tiene problemas para cargar porque no necesita una red. Parece ridículo, pero pierdo ~ 1 hora para averiguarlo.
var $ = jQuery;
jQuery(document).ready(function($){