I hate Internet Explorer
This commit is contained in:
@@ -510,12 +510,38 @@
|
|||||||
start = el.selectionStart;
|
start = el.selectionStart;
|
||||||
end = el.selectionEnd;
|
end = el.selectionEnd;
|
||||||
} else {
|
} else {
|
||||||
var range = document.selection.createRange();
|
var range = document.selection.createRange();
|
||||||
var stored_range = range.duplicate();
|
var stored_range = range.duplicate();
|
||||||
stored_range.moveToElementText( el );
|
stored_range.moveToElementText( el );
|
||||||
stored_range.setEndPoint( 'EndToEnd', range );
|
stored_range.setEndPoint( 'EndToEnd', range );
|
||||||
start = stored_range.text.length - range.text.length;
|
start = stored_range.text.length - range.text.length;
|
||||||
end = start + range.text.length;
|
end = start + range.text.length;
|
||||||
|
|
||||||
|
// so, uh, we're close, but we need to search for line breaks and
|
||||||
|
// adjust the start/end points accordingly since IE counts them as
|
||||||
|
// 2 characters in TextRange.
|
||||||
|
var s = start;
|
||||||
|
var lb = 0;
|
||||||
|
debug('IE: start position is currently ' + s);
|
||||||
|
for ( var i=0; i < s; i++ )
|
||||||
|
if ( el.value.charAt(i).match(/\r/) )
|
||||||
|
++lb;
|
||||||
|
|
||||||
|
if ( lb ) {
|
||||||
|
debug('IE start: compensating for ' + lb + ' line breaks');
|
||||||
|
start = start - lb;
|
||||||
|
lb = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var e = end;
|
||||||
|
for ( var i=0; i < e; i++ )
|
||||||
|
if ( el.value.charAt(i).match(/\r/) )
|
||||||
|
++lb;
|
||||||
|
|
||||||
|
if ( lb ) {
|
||||||
|
debug('IE end: compensating for ' + lb + ' line breaks');
|
||||||
|
end = end - lb;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user