¿Puedo mostrar un cuadro de diálogo de confirmación cuando el usuario cierre la ventana en Safari / Chrome?

En IE y FF, puedo adjuntar un controlador de eventos a onBeforeUnload, y al pasar una cadena a una propiedad del evento, el usuario verá un diálogo preguntándole si desea continuar con la “descarga” (ya sea cerrando la ventana o navegando lejos).

Safari y Chrome no son compatibles con BeforeBeforeUnload, y onUnload parece ser demasiado tarde. ¿Hay alguna forma de replicar la misma funcionalidad en Safari / Chrome?

NOTA: No estoy tratando de mantener al usuario como rehén. Sé que esto es molesto y desagradable. De hecho, mi sitio hace todo lo posible para que el usuario pueda usar libremente y tener todo en su lugar cuando regresen. Sin embargo, estoy alojando otros sitios dentro de IFrames, y algunas veces estos deciden deshacerse de mí y tomar el control del navegador, que es lo que trato de evitar.

¡Gracias!

Esto funciona perfectamente para mí tanto en Chrome como en Safari:

Test

Cuando bash cerrar la ventana, aparece el mensaje.

StackOverflow usa onbeforeunload , y funciona bien para mí en Safari:

 function setConfirmUnload(a){window.onbeforeunload=a?function(){return a}:null} 

Lo revisé en cromo y parece estar funcionando bien usando esto:

  

Esta pregunta se trata con un poco más de detalle en otra pregunta más reciente de StackOverFlow: Configuración antes de la descarga en el elemento del cuerpo en Chrome e IE usando jQuery