Der ganze neue code:
function cur_ins(field, startTag, endTag, offset) {
field.focus();
if ((window.getSelection && document.createRange) || document.getSelection) { // FF, Op., Ko., Safari
var scrollTop, scrollLeft;
if (field.type == 'textarea' && typeof field.scrollTop != 'undefined') {
scrollTop = field.scrollTop;
scrollLeft = field.scrollLeft;
}
selStart = field.selectionStart;
selEnd = field.selectionEnd;
text = field.value.substring(selStart, selEnd);
field.value = field.value.substring(0, selStart) + startTag + text + endTag + field.value.substring(selEnd);
if (typeof scrollTop != 'undefined') {
field.scrollTop = scrollTop;
field.scrollLeft = scrollLeft;
}
if (text.length > 0) {
if (offset != 0) {
field.selectionEnd = selStart + startTag.length - offset;
} else {
field.selectionEnd = selStart + startTag.length + text.length + endTag.length;
}
} else {
field.selectionEnd = selStart + startTag.length;
}
field.selectionStart = field.selectionEnd;
} else if (document.selection && document.selection.createRange) { // IE
marker = document.selection.createRange();
text = marker.text;
marker.text = startTag + text + endTag;
marker = document.selection.createRange();
if (text.length > 0) {
if (offset != 0) {
marker.move('character', startTag.length - offset);
} else {
marker.move('character', startTag.length + text.length + endTag.length + offset);
}
} else {
marker.move('character', -(endTag.length));
}
marker.select();
}
}
und vielleicht auch noch wie man das ganze dann in HTML umwandelt
ich bin immer noch für
QuickerUBB... :) Vor allem weil da auch highlighting und so dabei ist. Aber natürlich ist der "reguläre" Weg weniger Code - über die Performance lässt sich streiten.
Aber für ein CMS würde ich insgesamt das ganze BBCode-Zeugs über Bord werfen und einen WYSIWYG-Editor wie
TinyMCE verwenden. Ist mE viel benutzerfreundlicher...