Aquí hay una versión ligeramente más corta/más simple de mi respuesta anterior. Para facilitar las cosas, haremos una llamada AJAX en cada registro, y para facilitar aún más las cosas, utilizaremos jQuery para hacer el "trabajo pesado". (Si usa una biblioteca JS distinta de jQuery, debería tener algún tipo de método similar; si no, o si no está usando una biblioteca JS ... time to seriamente considere jQuery!) Oh, y nosotros ' Lanzaremos un pseudo-código del lado del servidor para demostrar cuán fácil es esa parte de la ecuación.
Paso 1: Añadir un montón de declaraciones console.log que ayudará a diagnosticar su problema
Paso 2: Añadir la lógica para volver a definir console.log en el sistema del cliente para que envíe el registro de su servidor si no hay una consola
var SERVER_URL = "www.yourServer.com/ajaxLogger.jsp";
var ajaxConsole = {"log":function(x) {
$.get(SERVER_URL, {"log":x});
}}
console = console || ajaxConsole; // If there is no console, use the AJAX one
Paso 3: Crear una página de inicio de sesión en el servidor de
el siguiente ejemplo se utiliza pseudo-código, ya que cada uno tiene un lenguaje de servidor diferente:
String log = pageParameters["log"];
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" +
dbEscape(log) +"', current date)");
P. S. No todos los navegadores admiten onUnload; si el de su cliente no funciona, probablemente desee activar las llamadas AJAX en cada console.log en su lugar (o bien usar window.setInterval para "sondear" window.log con frecuencia). – machineghost
Interesante y complicado ... ¡pero parece complicado! (en particular, el paso 3) ¿No hay una forma más fácil de hacer esto ...? – Dexter
Es muy simple, pero solo para intentar mostrar que he agregado una segunda respuesta. – machineghost