Desarrollé algo en JQuery
para crear una pequeña alerta de espera, en lo que el resto de operaciones y recursos se cargaban.
En el archivo, tengo lo siguiente:
// Executes on ready, only DOM ready
jQuery(function () {
console.log("Start DOM ready");
popupS.alert({
title: 'Producto',
content: 'Cargando todo para ver tu producto',
className: 'loading',
});
});
// Executes when everything is fully loaded
$(window).on('load', function () {
console.log("Start load ");
// Algo de la lógica
$.ajax({
type: 'GET',
url: '/get-info/' + design_id,
success: function success(data) {
$('.producto-relacionado-container').addClass('visible');
$('#designer-image').css('background-image', 'url(' + data['designer_image'] + ')');
$('#designer-name').text(data['designer_info']);
$('#designer-name').attr('href', data['designer_route']);
$('#title-suggested').text(data['designer_name']);
$('#suggested-image').css('background-image', 'url(' + data['image'] + ')');
$('#suggested-design-name').text(data['name']);
$('#suggested-design').attr('href', data['route']);
},
error: function error(data) {
console.log("Error", data);
}
});
});
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
Este código, en mi entorno local, funciona perfectamente. Si veo las salidas de consola, veo que, efectivamente, se ejecuta primero la función ready()
antes que la load()
, incluso sin importar que la función load()
se encuentre primero que la otra.
Lo que debería de ser lo correcto.
Pero el comportamiento es diferente cuando subo cambios a producción, y mi página está alojada en servidores de Google Cloud, es lo único diferente que existe.
Lo que sucede es que la página en producción (servidores de Google Cloud), ejecuta primero el contenido de la función load()
y al final lo de la función ready()
.
Estuve investigando, pero no me aparece nada relacionado a este problema específico.
Lo que he intentado es reemplazar la línea de jQuery(function () {
por $(document).ready(function () {
lo cual no tuvo efecto alguno.
También abrí una pestaña de incógnito, borré caché y, como tengo CloudFlare, también purgué los archivos.
Pero en producción, las salidas de consola, muestran en console.log()
de load()
antes que la de ready()
.