From 8a954f4435086739589e059326c0243f545be2d1 Mon Sep 17 00:00:00 2001 From: Eston Bond Date: Fri, 3 Dec 2010 22:46:59 -0800 Subject: [PATCH] IE7/8: Simplify textRange --- .../javascript/gollum-editor/gollum.editor.js | 38 +++++-------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/lib/gollum/frontend/public/javascript/gollum-editor/gollum.editor.js b/lib/gollum/frontend/public/javascript/gollum-editor/gollum.editor.js index 731f4b59..3491ebdb 100755 --- a/lib/gollum/frontend/public/javascript/gollum-editor/gollum.editor.js +++ b/lib/gollum/frontend/public/javascript/gollum-editor/gollum.editor.js @@ -124,8 +124,7 @@ */ var debug = function(m) { if ( ActiveOptions.Debug - && typeof console != 'undefined' - && typeof console.log == 'function' ) { + && typeof console != 'undefined' ) { console.log( m ); } }; @@ -503,39 +502,20 @@ */ getFieldSelectionPosition: function( $field ) { if ($field.length) { - var start = 0, end = 0, normalizedValue, range, - textInputRange, len, endRange; + var start = 0, end = 0; var el = $field.get(0); if (typeof el.selectionStart == "number" && - typeof el.selectionEnd == "number") { + typeof el.selectionEnd == "number") { start = el.selectionStart; end = el.selectionEnd; } else { - range = document.selection.createRange(); - - if (range && range.parentElement() == el) { - len = el.value.length; - normalizedValue = el.value.replace(/\r\n/g, "\n"); - textInputRange = el.createTextRange(); - 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; - } - } - } + var range = document.selection.createRange(); + var stored_range = range.duplicate(); + stored_range.moveToElementText( el ); + stored_range.setEndPoint( 'EndToEnd', range ); + start = stored_range.text.length - range.text.length; + end = start + range.text.length; } return {