Cuando hago clic en un botón (#test-element) hace que la página se actualice, pero quiero que luego ejecute una función después de que la página se actualice para abrir el carrito haciendo clic en un botón automáticamente (.cart-contents). ¿Cómo ejecuto una función después de actualizar la página si se hizo clic en el botón Agregar al carrito (#test-element)? Entonces, ¿la página se actualiza y hace clic en otro botón (.cart-contents)?
<script> $("#test-element").on("click",function() { setTimeout(function () { location.reload(true); }, 500); }); </script> <script type="text/javascript"> $("#test-element").on("click",function() { setTimeout(function () { $(document).ready(function(){ $(".cart-contents").trigger('click'); }, 500); });}); </script>Puede usar sessionStorage (solo se aplica a la página de sesión actual) para mantener su estado de clic. Después de recargar la página, podemos eliminar ese almacenamiento temporal.
Puedes probar este sandbox para la prueba.
$(document).ready(function() { $("#test-element").on("click", function() { setTimeout(function() { sessionStorage.setItem('isReloaded', 'true'); location.reload(true); }, 500); }); $(".cart-contents").on("click", function() { alert('cart-content triggered') }) const isReloaded = sessionStorage.getItem('isReloaded'); if (isReloaded) { sessionStorage.removeItem('isReloaded') $(".cart-contents").trigger('click'); } });Esta forma no es perfecta, pero puede resolver sus necesidades básicas en términos de mantener los estados de la página.
Probablemente no necesites (o ni siquiera quieras) hacer esto. Suena como una solución demasiado complicada para un problema de mezclar AJAX y cargas/solicitudes de página, y la solución real sería solucionar cualquier problema de diseño que haga que quieras hacer esto para compensarlo.
Una vez dicho esto...
Cada vez que se carga la página, el JavaScript comienza de nuevo. Por lo tanto, cualquier información que desee conservar entre las cargas de la página debe existir fuera del código de la página. Uno de esos lugares para almacenar datos podría ser localStorage .
Entonces, su operación para recargar la página escribiría un valor en localStorage :
$("#test-element").on("click",function() { setTimeout(function () { localStorage.setItem("clickCartContents", true); location.reload(true); }, 500); });Y al cargar la página, puede verificar si se estableció ese valor:
$(document).ready(function(){ if(localStorage.getItem("clickCartContents")) { $(".cart-contents").trigger('click'); localStorage.removeItem("clickCartContents"); } });