IE7/8: Simplify textRange
This commit is contained in:
@@ -124,8 +124,7 @@
|
|||||||
*/
|
*/
|
||||||
var debug = function(m) {
|
var debug = function(m) {
|
||||||
if ( ActiveOptions.Debug
|
if ( ActiveOptions.Debug
|
||||||
&& typeof console != 'undefined'
|
&& typeof console != 'undefined' ) {
|
||||||
&& typeof console.log == 'function' ) {
|
|
||||||
console.log( m );
|
console.log( m );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -503,8 +502,7 @@
|
|||||||
*/
|
*/
|
||||||
getFieldSelectionPosition: function( $field ) {
|
getFieldSelectionPosition: function( $field ) {
|
||||||
if ($field.length) {
|
if ($field.length) {
|
||||||
var start = 0, end = 0, normalizedValue, range,
|
var start = 0, end = 0;
|
||||||
textInputRange, len, endRange;
|
|
||||||
var el = $field.get(0);
|
var el = $field.get(0);
|
||||||
|
|
||||||
if (typeof el.selectionStart == "number" &&
|
if (typeof el.selectionStart == "number" &&
|
||||||
@@ -512,30 +510,12 @@
|
|||||||
start = el.selectionStart;
|
start = el.selectionStart;
|
||||||
end = el.selectionEnd;
|
end = el.selectionEnd;
|
||||||
} else {
|
} else {
|
||||||
range = document.selection.createRange();
|
var range = document.selection.createRange();
|
||||||
|
var stored_range = range.duplicate();
|
||||||
if (range && range.parentElement() == el) {
|
stored_range.moveToElementText( el );
|
||||||
len = el.value.length;
|
stored_range.setEndPoint( 'EndToEnd', range );
|
||||||
normalizedValue = el.value.replace(/\r\n/g, "\n");
|
start = stored_range.text.length - range.text.length;
|
||||||
textInputRange = el.createTextRange();
|
end = start + range.text.length;
|
||||||
textInputRange.moveToBookmark(range.getBookmark());
|
|
||||||
endRange = el.createTextRange();
|
|
||||||
endRange.collapse(false);
|
|
||||||
|
|
||||||
if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
|
|
||||||
start = end = len;
|
|
||||||
} else {
|
|
||||||
start = -textInputRange.moveStart("character", -len);
|
|
||||||
start += normalizedValue.slice(0, start).split("\n").length - 1;
|
|
||||||
|
|
||||||
if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
|
|
||||||
end = len;
|
|
||||||
} else {
|
|
||||||
end = -textInputRange.moveEnd("character", -len);
|
|
||||||
end += normalizedValue.slice(0, end).split("\n").length - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
Reference in New Issue
Block a user