Hallo,
phpBB (
www.phpBB.com) ist eine auf PHP basierende Forensoftware.
Leider unterstützt phpBB von Haus aus nur den IE zu 100%.

Mozilla,
Firefox, Opera & Co werden stiefmütterlich behandelt. Speziell wenn es
um javacript und um das Einfügen von phpBB Code/Smilies geht. Für
Firefox gibt es einen Patch, der z.B. die Funktion emoticon(text)
ersetzt. Diese neue Funktion fügt nun auch unter Firefox Smilies an
der aktuellen Cursorposition ein, springt dann aber wieder an den
Anfang des Textes.

Gleiches Verhalten mit Firefox beim Einfügen von
BBcode. Beim IE bleibt der Text in Position. Dieses Firefox-Verhalten
ist beim Editieren längerer Texte mehr als lästig, da man nach jedem
Einfügen eines Smilies (oder BBcode) immer wieder manuell an die
letzte Position zurück-scrollen muß.
function emoticon(text)
{
text = ' ' + text + ' ';
if (document.post.message.createTextRange &&
document.post.message.caretPos)
{
var caretPos = document.post.message.caretPos;
caretPos.text =
caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' :
text;
document.post.message.focus();
}
else if(typeof document.post.message.selectionStart !=
'undefined')
{
// Firefox
posttextarea = document.post.message;
selected=(posttextarea.value).substring(posttextar ea.selectionStart,posttextarea.selectionEnd);
posttextarea.focus();
start=posttextarea.selectionStart;
end=posttextarea.textLength;
endtext=posttextarea.value.substring(posttextarea. selectionEnd,end);
starttext=posttextarea.value.substring(0,start);
posttextarea.value=starttext + text + endtext;
posttextarea.selectionStart=start;
posttextarea.selectionEnd=start;
return;
}
else
{
// Opera & Co
document.post.message.value+= text;
document.post.message.focus();
}
}
Der IE-Part funktioniert wie gewünscht:
if (document.post.message.createTextRange &&
document.post.message.caretPos)
{
var caretPos = document.post.message.caretPos;
caretPos.text =
caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' :
text;
document.post.message.focus();
}
Der Firefox-Part:
else if(typeof document.post.message.selectionStart != 'undefined')
{
// Firefox
posttextarea = document.post.message;
selected=(posttextarea.value).substring(posttextar ea.selectionStart,posttextarea.selectionEnd);
posttextarea.focus();
start=posttextarea.selectionStart;
end=posttextarea.textLength;
endtext=posttextarea.value.substring(posttextarea. selectionEnd,end);
starttext=posttextarea.value.substring(0,start);
posttextarea.value=starttext + text + endtext;
posttextarea.selectionStart=start;
posttextarea.selectionEnd=start;
return;
}
positioniert zum Schluß der Funktion offenbar an den Anfang des
Textes. Wie kann man das unterbinden?
Ich kenne mich mit javascript nicht aus. Eine Lösung würde der Firefox
phpBB- Community sehr helfen.
Gruß Reiner