IE prior to 9 doesn't support window.getSelection()
. You can use document.selection
instead (see this msdn page for the description). This selection object has a method createRange()
that returns a TextRange
object (see this msdn page for details).
Note that both the selection
and textrange
objects are Microsofts own implementation and do not follow the W3C standards. You can read more about the textrange
and range
issues on www.quirksmode.org/dom/range_intro.html.
The following implementation works in IE:
$('#click').click(function(){
var range = document.selection.createRange();
range.pasteHTML("<span style='color: red'>" + range.htmlText + "</span>");
});
It's not nearly as nice as the other implementation since you have to work with strings instead of the dom. There is a little hack where you paste <span id="myUniqueId"></span>
as a placeholder, and afterwards replace it using the dom. You still have to work with range.htmlText
or range.text
though.
BTW: the above implementation is obviously IE only. You have to use some browser capability detection to decide which version to use.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…