Fix jstoolbar to make buttons for h1, h2, <pre> etc. work in IE8

pull/351/head
Stephan Eckardt 14 years ago
parent 0ace77081d
commit 9e04bf83c0
  1. 26
      public/javascripts/jstoolbar/jstoolbar.js

@ -249,7 +249,29 @@ jsToolBar.prototype = {
suffix = suffix || ''; suffix = suffix || '';
var start, end, sel, scrollPos, subst, res; var start, end, sel, scrollPos, subst, res;
if (typeof(document["selection"]) != "undefined") { 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") { } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") {
start = this.textarea.selectionStart; start = this.textarea.selectionStart;
end = this.textarea.selectionEnd; end = this.textarea.selectionEnd;
@ -271,7 +293,7 @@ jsToolBar.prototype = {
} }
subst = prefix + res + suffix; subst = prefix + res + suffix;
if (typeof(document["selection"]) != "undefined") { if (typeof(document["selection"]) != "undefined") {
var range = document.selection.createRange().text = subst; range.text = subst;
this.textarea.caretPos -= suffix.length; this.textarea.caretPos -= suffix.length;
} else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") {
this.textarea.value = this.textarea.value.substring(0, start) + subst + this.textarea.value.substring(end); this.textarea.value = this.textarea.value.substring(0, start) + subst + this.textarea.value.substring(end);

Loading…
Cancel
Save