Estoy trabajando en un proyecto de Sitecore donde se hace referencia a las bibliotecas de Javascript dentro de los componentes y se cargarían antes que jQuery.
[ Considérelo como una biblioteca JS a la que se hace referencia dentro de .cshtml (MVC) ]
Esto significa que el archivo JS se carga antes que jQuery y esto arrojaría un error en la consola: $ is undefined
[Actualmente, jQuery se coloca al final de la etiqueta del cuerpo, el lugar habitual.]
Para manejar esto, los archivos JS personalizados tienen este enfoque para esperar jQuery:
var readyForFileA = (callbackForFileA) => { if (document.readyState != "loading") { callbackForFileA(); } else { document.addEventListener("DOMContentLoaded", callbackForFileA); } } readyForFileA(() => { $(txt).click(function(){ some_method(); }); }); function some_method(){ }Ahora el problema es que hay muchos archivos de este tipo con un código similar de "esperar hasta que se cargue jQuery" que está ralentizando la carga de DOM para las páginas, ya que supongo que va en un bucle hasta que se carga DOM.
$(document).ready() var readyForFileA = (callbackForFileA) => { if (document.readyState != "loading") { callbackForFileA(); } else { document.addEventListener("DOMContentLoaded", callbackForFileA); } } Algo así como var readyForFileA = $(document).ready();
Entonces, que la siguiente parte no necesita cambiar
readyForFileA(() => { .... });Si no es así, sugiera una mejor alternativa.
Puede intentar usar el atributo aplazar en los scripts, de esa manera se recuperan después de que el contenido de la página termine de cargarse, lo que ayudará con el rendimiento de carga de la página:
<head> <script defer src="./myscript.js"></script> </head> El objeto window tiene muchos eventos que puedes usar para esto. Después de una búsqueda rápida en Google, no parece que jQuery tenga algún evento que esperar, por eso voy a usar el evento window.load en su lugar:
// Wait for the page to load window.addEventListener("load", () => { // Code to execute once the page has loaded $(txt).click(() => { some_method(); }); });Tenga en cuenta que es posible que desee utilizar otros eventos de ventana si su código debe ejecutarse lo antes posible.
También tenga en cuenta que las devoluciones de llamadas se consideran malas prácticas, use promesas en su lugar.