diff --git a/public/javascripts/jstoolbar/jstoolbar.js b/public/javascripts/jstoolbar/jstoolbar.js index bfef733e..dbc973fe 100644 --- a/public/javascripts/jstoolbar/jstoolbar.js +++ b/public/javascripts/jstoolbar/jstoolbar.js @@ -249,7 +249,29 @@ jsToolBar.prototype = { suffix = suffix || ''; var start, end, sel, scrollPos, subst, res; if (typeof(document["selection"]) != "undefined") { - sel = document.selection.createRange().text; + // just makes it work in IE8 somehow + var range = document.selection.createRange(); + var bookmark = range.getBookmark(); + var origParent = range.parentElement(); + // we move the starting point of the selection to the last newline + try { + while (range.text[0] != "\n" && range.text[0] != "\r") { + bookmark = range.getBookmark(); + range.moveStart("character", -1); + if (origParent != range.parentElement()) { + throw "Outside of Textarea"; + } + } + range.moveStart("character", 1); + } catch(err) { + if (err == "Outside of Textarea") + range.moveToBookmark(bookmark); + else + throw err; + } + if (range.text.match(/ $/)) + range.moveEnd("character", -1); + sel = range.text; } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { start = this.textarea.selectionStart; end = this.textarea.selectionEnd; @@ -271,7 +293,7 @@ jsToolBar.prototype = { } subst = prefix + res + suffix; if (typeof(document["selection"]) != "undefined") { - var range = document.selection.createRange().text = subst; + range.text = subst; this.textarea.caretPos -= suffix.length; } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { this.textarea.value = this.textarea.value.substring(0, start) + subst + this.textarea.value.substring(end);