¿Cómo puedo obtener el elemento en el que está caret con Javascript, cuando uso contentEditable?

Digamos que tengo un código HTML como este:

<body contentEditable="true">
   <h1>Some heading text here</h1>
   <p>Some text here</p>
</body>

Ahora el cursor (el cursor parpadeante) está parpadeando dentro del elemento H1, digamos en la palabra "encabezado". ¿Cómo puedo obtener el nombre del elemento en el que se encuentra Caret con JavaScript? Aquí me gustaría obtener "h1".

Esto debe funcionar solo en WebKit (está incrustado en una aplicación). Preferiblemente también debería funcionar para selecciones.

Respuestas a la pregunta(1)

Su respuesta a la pregunta