el siguiente script se utiliza para cargar en un IFRAME una aplicación web.
function openCashier(destination) { postIsAnonymous(function (data) { if (data.IsAnonymous) { window.parent.location.replace('<%= ResolveUrl("~/Popup/login") %>'); } else { stateReset('showUserBtn'); WCore.OpenTab('cashier'); $("#cashierPopup").addClass(destination); $("#cashierFrame").attr('src', '<%= ResolveUrl(Routing.GetUrl("Root-TPAutologin")) %>?Destinazione=' + destination); } }); }En Firefox todo funciona bien, mientras que en Edge y Chrome me sale el error 404. Si trato de cargar el contenido del IFRAME en una sesión separada del navegador, todo funciona. Intenté editar el javascript de la siguiente manera, temiendo un problema de asincronismo:
function openCashier(destination) { setTimeout(function () { postIsAnonymous(function (data) { if (data.IsAnonymous) { window.parent.location.replace('<%= ResolveUrl("~/Popup/login") %>'); } else { stateReset('showUserBtn'); WCore.OpenTab('cashier'); $("#cashierPopup").addClass(destination); $("#cashierFrame").attr('src', '<%= ResolveUrl(Routing.GetUrl("Root-TPAutologin")) %>?Destinazione=' + destination); } }); }, 1000 * 20); }Con este truco se soluciona el problema con muy malas actuaciones .
El código PostIsAnonymous es el siguiente:
function postIsAnonymous(successFunc) { $.ajax({ type: "POST", url: '?checkIsAnonymous=1', cache: false, contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15", processData: false, success: successFunc }); }¿Tiene alguna sugerencia que darme para resolver el problema de una manera más elegante? Gracias
Resolví el problema con el siguiente código.
function openCashier(destination) { var dest = destination; sessionManager.isAnonymous() .then((data) => { if (data.IsAnonymous) { window.parent.location.replace('<%= ResolveUrl("~/Popup/login") %>'); } else { stateReset('showUserBtn'); WCore.OpenTab('cashier'); $("#cashierPopup").addClass(dest); $("#cashierFrame").attr('src', '<%= ResolveUrl(Routing.GetUrl("Root-TPAutologin")) %>?Destinazione=' + dest); } }) .catch((err) => { console.error(err); }); } var sessionManager = { isAnonymous: () => { return new Promise((resolve, reject) => { $.ajax({ type: "POST", url: '?checkIsAnonymous=1', cache: false, contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15", processData: false, success: function (data) { resolve(data); }, error: function (data) { reject(data); } }); }) } }