Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

242
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!