Creo que si te preocupa que tu información se corrompa, no estás haciendo los controles necesarios. He usado algunos sistemas que no recomiendan el uso de esos botones, y el usarlos lleva a información mal mostrada en la pantalla, pero no mal procesada.
Si el resultado de actualizar o ir atrás no es bueno, los usuarios frecuentes aprenderán a no usar las teclas, siempre que proveas alternativas reales para navegar en tu aplicación.
También podés simplemente avisar que no se recomienda el uso de los controles del navegador, probablemente sea suficiente en la mayoría de los casos.
Y por último, dejame decirte también que los controles que se acceden por botones de las barras de herramientas son imbloqueables, así como los gestos del ratón de Opera y Firefox. Por lo que tampoco basta con bloquear el teclado.
Pero bueno, es tu decisión y es respetable. Así que paso a contestar tu pregunta:
Para detectar si las teclas Control, Shift o Alt están presionadas al momento de lanzar el evento, podés usar los atributos event.ctrlKey, event.altKey, event.shiftKey del objeto
event.
Pero cuidado: solamente IE tiene el objeto
window.event, otros navegadores respetan el DOM e implementan el objeto evento como parámetro de la función que el evento ejecuta, por lo que esto a veces se hace así
Código:
function funcion_que_responde_al_evento(objetoEvento) {
evt = (objetoEvento) ? objetoEvento : window.event;
.... resto de la función
}
Que hace más o menos esto: si el objetoEvento existe, quiere decir que el navegador soporta correctamente el DOM y lo envía a la función, por lo que lo usamos. Si no existe, usamos window.event, que es lo que manda el IE.
No olvides luego que lo que tenés que usar en el resto de la función es la variable evt.
Saludos