Seite 1 von 2
Cursor an MAUSPOS: In Mozilla
Verfasst: 04.10.2003 18:44
von thl1000
Moin,
ich verzweifle grad...
Gibt es irgendein Workaround, um Mozilla zu veranlassen, den BBCode an der Cursorposition einzufügen?
Alle Mods, die zu diesem Thema vorhanden sind, funktionieren nicht in gewünschterweise mit Mozilla bzw. Firebird.
Für gute Ideen bin ich dankbar.
Verfasst: 04.10.2003 19:05
von Warren
im ie fügt er den bbcode auch am schluss an, wenn schon text geschrieben wurde!
Verfasst: 04.10.2003 19:06
von Henne
Da gibts aber Alternativen, bei denen das behoben ist...
Verfasst: 04.10.2003 19:07
von Warren
schon?
RE...
Verfasst: 05.10.2003 00:14
von thl1000
Also, ich habe folgendes geändert (funzt im IE und im Mozilla...
1. Smilies:
Code: Alles auswählen
function emoticon(text) {
var txtarea = document.post.message;
text = ' ' + text + ' ';
if (txtarea.createTextRange && txtarea.caretPos)
{
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
txtarea.focus();
}
else if (document.getElementById && !document.all) // Mozilla
{
var selEnd = txtarea.selectionEnd;
var txtLen = txtarea.value.length;
var txtbefore = txtarea.value.substring(0,selEnd);
var txtafter = txtarea.value.substring(selEnd, txtLen);
txtarea.value = txtbefore + text + txtafter;
}
else
{
txtarea.focus();
txtarea.value += text;
}
}
2. Schriftfarbe und -grösse:
Code: Alles auswählen
function bbfontstyle(bbopen, bbclose) {
var txtarea = document.post.message;
if ((clientVer >= 4) && is_ie && is_win)
{
theSelection = document.selection.createRange().text;
if (!theSelection)
{
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbopen + bbclose + ' ' : bbopen + bbclose;
txtarea.focus();
//txtarea.value += bbopen + bbclose;
//txtarea.focus();
return;
}
document.selection.createRange().text = bbopen + theSelection + bbclose;
txtarea.focus();
return;
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbopen, bbclose);
return;
}
else if (document.getElementById && !document.all) // Mozilla
{
var selEnd = txtarea.selectionEnd;
var txtLen = txtarea.value.length;
var txtbefore = txtarea.value.substring(0,selEnd);
var txtafter = txtarea.value.substring(selEnd, txtLen);
txtarea.value = txtbefore + bbopen + bbclose + txtafter;
}
else
{
txtarea.value += bbopen + bbclose;
txtarea.focus();
}
storeCaret(txtarea);
}
Bei diesen Code-Änderungen werden die Smilies und der BBCode für Schriftfarbe u. -grösse an der Cursor-Position eingefügt.
Nur bei der Funktion bbstyle(bbnumber) komme ich nicht weiter.
Hier bräuchte ich Hilfe...
die Lösung?
Verfasst: 05.10.2003 14:01
von thl1000
So, habe jetzt diesen Code, der allerdings beim Mozilla noch einen Bug hat:
Der Cursor springt nach jedem Einfügen eines BBCodes an das Ende des Textfeldes. Hier bräuchte ich jetzt noch Hilfe.
Code: Alles auswählen
function emoticon(text)
{
var txtarea = document.post.message;
text = ' ' + text + ' ';
if (is_ie)
{
if (txtarea.createTextRange && txtarea.caretPos)
{
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
txtarea.focus();
}
else
{
txtarea.focus();
txtarea.value += text;
}
}
else if (document.getElementById && !document.all) // Mozilla cursor fix
{
mozWrap(txtarea, text, '');
}
else // Other browsers
{
txtarea.focus();
txtarea.value += text;
}
}
function bbfontstyle(bbopen, bbclose)
{
var txtarea = document.post.message;
if ((clientVer >= 4) && is_ie && is_win)
{
theSelection = document.selection.createRange().text;
if (!theSelection)
{
// IE Cursor Fix
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbopen + bbclose + ' ' : bbopen + bbclose;
txtarea.focus();
//txtarea.value += bbopen + bbclose;
//txtarea.focus();
return;
}
document.selection.createRange().text = bbopen + theSelection + bbclose;
txtarea.focus();
return;
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbopen, bbclose);
return;
}
else if (document.getElementById && !document.all) // Mozilla cursor fix
{
mozWrap(txtarea, bbopen, bbclose);
return;
}
else // Other browsers
{
txtarea.value += bbopen + bbclose;
txtarea.focus();
}
storeCaret(txtarea);
}
function bbstyle(bbnumber)
{
var txtarea = document.post.message;
txtarea.focus();
donotinsert = false;
theSelection = false;
bblast = 0;
if (bbnumber == -1)
{
// Close all open tags & default button names
while (bbcode[0])
{
if(is_ie) // IE cursor fix
{
if (txtarea.createTextRange && txtarea.caretPos)
{
var caretPos = txtarea.caretPos;
butnumber = arraypop(bbcode) - 1;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[butnumber + 1] + ' ' : bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
else
{
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
}
else if (document.getElementById && !document.all) // Mozilla cursor fix
{
butnumber = arraypop(bbcode) - 1;
mozWrap(txtarea, bbtags[butnumber + 1], '');
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
else // Other browsers
{
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
//butnumber = arraypop(bbcode) - 1;
//txtarea.value += bbtags[butnumber + 1];
//buttext = eval('document.post.addbbcode' + butnumber + '.value');
//eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
}
imageTag = false; // All tags are closed including image tags :D
txtarea.focus();
return;
}
if ((clientVer >= 4) && is_ie && is_win)
{
theSelection = document.selection.createRange().text; // Get text selection
if (theSelection)
{
// Add tags around selection
document.selection.createRange().text = bbtags[bbnumber] + theSelection + bbtags[bbnumber+1];
txtarea.focus();
theSelection = '';
return;
}
}
else if (txtarea.selectionEnd && (txtarea.selectionEnd - txtarea.selectionStart > 0))
{
mozWrap(txtarea, bbtags[bbnumber], bbtags[bbnumber+1]);
return;
}
// Find last occurance of an open tag the same as the one just clicked
for (i = 0; i < bbcode.length; i++) {
if (bbcode[i] == bbnumber+1) {
bblast = i;
donotinsert = true;
}
}
if (donotinsert)
{
// Close all open tags up to the one just clicked & default button names
while (bbcode[bblast])
{
if (is_ie) // IE cursor fix
{
if (txtarea.createTextRange && txtarea.caretPos)
{
var caretPos = txtarea.caretPos;
butnumber = arraypop(bbcode) - 1;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[butnumber + 1] + ' ' : bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
imageTag = false;
}
else
{
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
imageTag = false;
}
}
else if (document.getElementById && !document.all) // Mozilla cursor fix
{
butnumber = arraypop(bbcode) - 1;
mozWrap(txtarea, bbtags[butnumber + 1], '');
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
imageTag = false;
}
else // Other browsers
{
butnumber = arraypop(bbcode) - 1;
txtarea.value += bbtags[butnumber + 1];
buttext = eval('document.post.addbbcode' + butnumber + '.value');
eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
imageTag = false;
}
//butnumber = arraypop(bbcode) - 1;
//txtarea.value += bbtags[butnumber + 1];
//buttext = eval('document.post.addbbcode' + butnumber + '.value');
//eval('document.post.addbbcode' + butnumber + '.value ="' + buttext.substr(0,(buttext.length - 1)) + '"');
//imageTag = false;
}
txtarea.focus();
return;
}
else
{
// Open tags
if (is_ie) // IE cursor fix
{
if (imageTag && (bbnumber != 14))
{
// Close image tag before adding another
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[15] + ' ' : bbtags[15];
lastValue = arraypop(bbcode) - 1; // Remove the close image tag from the list
document.post.addbbcode14.value = "Img"; // Return button back to normal state
imageTag = false;
}
// Open tag
if (txtarea.createTextRange && document.post.message.caretPos)
{
var caretPos = txtarea.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? bbtags[bbnumber] + ' ' : bbtags[bbnumber];
if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
txtarea.focus();
return;
}
else
{
txtarea.value += bbtags[bbnumber];
if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
txtarea.focus();
return;
}
}
else if (document.getElementById && !document.all) // Mozilla cursor fix
{
// Open tags
if (imageTag && (bbnumber != 14))
{
// Close image tag before adding another
mozWrap(txtarea, bbtags[15], bbtags[bbnumber]);
lastValue = arraypop(bbcode) - 1; // Remove the close image tag from the list
document.post.addbbcode14.value = "Img"; // Return button back to normal state
imageTag = false;
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
//txtarea.focus();
//return;
}
else
{
// Open tag
mozWrap(txtarea, bbtags[bbnumber], '');
if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
txtarea.focus();
return;
}
}
else // Other browsers
{
if (imageTag && (bbnumber != 14))
{
// Close image tag before adding another
txtarea.value += bbtags[15];
lastValue = arraypop(bbcode) - 1; // Remove the close image tag from the list
document.post.addbbcode14.value = "Img"; // Return button back to normal state
imageTag = false;
}
else
{
// Open tag
txtarea.value += bbtags[bbnumber];
if ((bbnumber == 14) && (imageTag == false)) imageTag = 1; // Check to stop additional tags after an unclosed image tag
arraypush(bbcode,bbnumber+1);
eval('document.post.addbbcode'+bbnumber+'.value += "*"');
txtarea.focus();
return;
}
}
}
storeCaret(txtarea);
}
RE...
Verfasst: 06.10.2003 18:00
von thl1000
Hat denn keiner eine Idee?
Verfasst: 06.10.2003 18:22
von SevenIsMy
http://www.c-plusplus.de/forum/posting. ... topic&f=15
kuck dir mal den quellcode an, (ich habe das gecodet) wollte das auch schon public machen, nur war mir das zu dumm die neuerung in das halbhertzig gecodet standard phpbb einzucoden
RE...
Verfasst: 06.10.2003 18:26
von thl1000
Moin,,
Dein Code fügt den BBCode am Ende des Textes ein (zumindest beim Mozilla). Aber Danke für den Tipp...
Verfasst: 06.10.2003 18:35
von SevenIsMy
scheisse das hatt doch mal funktioniert, mom ich muss mal kucken