IE antes de 9 no es compatible con window.getSelection()
. Puede usar document.selection
en su lugar (vea this msdn page para la descripción). Este objeto de selección tiene un método createRange()
que devuelve un objeto TextRange
(ver this msdn page para más detalles).
Tenga en cuenta que los objetos selection
y textrange
son la propia implementación de Microsofts y no cumplen con los estándares W3C. Puede leer más sobre los problemas textrange
y range
en www.quirksmode.org/dom/range_intro.html.
La siguiente aplicación funciona en IE:
$('#click').click(function(){
var range = document.selection.createRange();
range.pasteHTML("<span style='color: red'>" + range.htmlText + "</span>");
});
No es tan bonito como la otra aplicación ya que tiene que trabajar con cadenas en lugar de DOM. Hay un pequeño truco donde pegas <span id="myUniqueId"></span>
como marcador de posición, y luego lo reemplazas usando el dom. Sin embargo, todavía tiene que trabajar con range.htmlText
o range.text
.
BTW: la implementación anterior es obviamente solo IE. Debe usar la detección de capacidad del navegador para decidir qué versión usar.
@Alex IE anterior a 9 no implementa 'getSelection()'. –
¿Qué versión de IE? – Ryre
El código funciona para mí en Chrome 8. Seleccioné el texto e hice clic en el botón, y el texto se volvió rojo, por lo que algo funciona. – Blender