Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

239
Vistas
Jquery no está definido cuando se elimina el atributo "text/javascript"

Escenario que funciona:

  • Tengo un archivo APP_FRAMEWORK.JS que se generó a través de un WEBPACK , que incluye BOOTSTRAP AND JQUERY dentro.

     <script type="text/javascript" src="{{ asset('js/app_framework.js') }}" defer></script> @if(!empty($assets['js'])) @foreach ($assets['js'] as $js) <script type="text/javascript" src="{{ asset($js) }}"></script> @endforeach @endif

Si cargo la página como en el ejemplo, funciona perfectamente, sin ningún error en los scripts que se cargan dentro de ese bucle a continuación.

Mi pregunta:

  • ¿Por qué, si elimino el "text/javascript" al cargar el MAIN SCRIPT (APP_FRAMEWORK.JS) comienza a aparecer el error $ is not defined ?
  • Recordando que este TYPE ya no es obligatorio, los scripts se cargan en el orden correcto y hay un DEFER !!!

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

  1. Obligar al navegador a no cargar scripts desde el caché ( SHIFT + RELOAD en Mac) ingrese la descripción de la imagen aquí Con solo hacer eso, ya vemos que APP_FRAMEWORK.JS se está cargando después de los demás.

  2. Otro punto, defer no impide que se carguen otros scripts hasta que los que lo tienen definido realicen su proceso. La definición del atributo defer va más allá, siendo:

    El atributo defer le dice al navegador que ejecute el script solo cuando finalice el análisis de HTML. El script se solicitará de forma asíncrona, se completará su descarga y, solo cuando finalice el análisis del documento HTML, se ejecutará. Incluso si la descarga del script completo ocurre antes del análisis HTML completo, no se ejecutará hasta más tarde. Si tiene varios elementos de secuencia de comandos con el atributo defer , se solicitarán en paralelo y se ejecutarán en la secuencia indicada.

  3. Como los scripts se encuentran en la parte inferior de la página, no es necesario usar defer , ya que nunca dejará de interpretar el HTML para descargar cualquier JS.

  4. El problema en sí no tiene nada que ver con type="text/javascript" , todo está relacionado con el tamaño de los scripts cargados, tiempo de descarga, en vista del orden de dependencia y ejecución.

  5. Si realmente necesita seguir un orden de carga de JS, defer debe usarse en todos los <script defer> , para que siga la secuencia declarada, por lo tanto:

 <script defer src="{{ asset('js/app_framework.js') }}" defer></script> <script defer src="{{ asset('js/app.js') }}"> others ...</script> @if(!empty($assets['js'])) @foreach ($assets['js'] as $js) <script defer src="{{ asset($js) }}"></script> @endforeach @endif

ingrese la descripción de la imagen aquí

Enlace de referencia: https://www.braziljs.org/p/diferencas-entre-async-e-defer

Y ahora viene la pregunta que no quiere callar... ¿Por qué, aun cargando los archivos de la caché en el orden correcto, el navegador mostraba el mensaje?

¿Alguien ha oído hablar de error cache del navegador basada en esos archivos? Como, ¿ves que los scripts son los mismos, que la última ejecución de esos scripts dio un error y ya muestra el error automáticamente?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda