resaltado de selección de usuario de JavaScript

Estoy tratando de encontrar una manera con javascript para resaltar el texto que el usuario selecciona cuando hace clic en algún botón de resaltado extraño (como en <span style = "background-color: yellow"> texto resaltado </span>). Solo tiene que funcionar con WebKit o Firefox, pero parece casi imposible porque tiene que funcionar en los siguientes casos:

<p>this is text</p>
<p>I eat food</p>

Cuando el usuario selecciona "es texto" a través de "Yo como" en el navegador (no puede poner un espacio allí).

y este caso:

<span><span>this is text</span>middle text<span>this is text</span></span>

Cuando el usuario selecciona "es texto" a "esto es" en el navegador (aunque puede ajustar sus espacios de resaltado alrededor de cada elemento en la selección, me gustaría ver que intente resaltar ese texto del medio).

Este problema no parece resolverse en ningún lado, francamente dudo que sea posible.

Sería posible si pudiera obtener el Rango que obtiene de la selección como una cadena completa con html que podría analizarse y luego reemplazarse, pero por lo que puedo decir, no puede obtener el html sin formato de un Rango ... lástima.

Respuestas a la pregunta(6)

Su respuesta a la pregunta