JavaScript-Quellcode nicht Mozilla fähig

Arne Buchwald

Erfahrenes Mitglied
Hallo,

für das Einfügen von Smilies und BBCodes benutze ich in unserer Forumsoftware folgenden JavaScript-Quellcode:
Code:
function cursor() { 
  if (( navigator.userAgent.indexOf("Opera" ) != -1) || ( navigator.userAgent.indexOf("Netscape" ) != -1)) { 
    text_before = document.forms[0].postmessage.value; 
    text_after = ""; 
  } else { 
    document.forms[0].postmessage.focus(); 
    var sel = document.selection.createRange(); 
    sel.collapse(); 
    var sel_before = sel.duplicate(); 
    var sel_after = sel.duplicate(); 
    sel.moveToElementText(document.forms[0].postmessage); 
    sel_before.setEndPoint("StartToStart",sel); 
    sel_after.setEndPoint("EndToEnd",sel); 
    text_before = sel_before.text; 
    text_after = sel_after.text; 
  } 
} 

function insert(AddCode) { 
  cursor(); 
  document.forms[0].postmessage.value = text_before + AddCode + text_after; 
  document.forms[0].postmessage.focus(); 
} 

function init(thisCode) { 
  with ( document.forms[0].postmessage.value ) { 
    insert(thisCode); 
    document.forms[0].postmessage.focus(); 
  } 
}
Dieser funktioniert jedoch leider nur im InternetExplorer.

Wäre nett, wenn jemand diesen kurz überfliegen könnte, und posten, an welchen Stellen ich etwas ändern muss ?

Danke.
 
ich würde versuchen die zweite Zeile:

Code:
if (( navigator.userAgent.indexOf("Opera" ) != -1) || ( navigator.userAgent.indexOf("Netscape" ) != -1)) {

durch diese:

Code:
if (( !window.opera ) || ( navigator.userAgent.indexOf("Netscape4" ) != -1)) {

zu ersetzen.

habe das nicht getestet aber einen Versuch ist es wert
 
Schön - eingefügt werden die Smilies jetzt schon mal. :)

Im Moment werden Smilies jedoch an den bestehenden Text in der Textarea angehängt. Im IE wird er an die aktuelle Cursorposition gesetzt - gibt es dafür evtl. auch noch eine Lösung ??
 
Bei mir hier auf dem IE 6 (ungepatcht) funktioniert das ganze zwar nicht mit dem Einsetzen des Codes an die entsprechende Cursorposition, aber für den Fall, dass es auf späteren, bzw. gepatchten Versionen doch läuft, bin ich sicher, dass es an den Eigenschaften und Methoden des selection-Objektes liegt, welches ja als Unterobjekt des document-Objektes vorliegt.

Da dieses selection-Objekt aber nur im Internet Explorer existiert, existieren auch in nicht-IE-Browsern nicht die benötigten Methoden wie collapse(), duplicate() und setEndPoint().
Ich habe zumindest noch nichts darüber gehört, dass diese mittlerweile auch in anderen Browsern fehlerfrei und funktionabel interpretiert werden könnten...

Also eher ein netter Schnickschnack des Internet Explorers als eine browserübergreifend mögliche Ergänzung zum bisherigen Script. :)

hoffe keinen Mist zu erzählen,
Geist
 
Hallo,

dieser Thread ist zwar schon etwas älter, aber ich habe wenigstens die Suchfunktion benutzt. :)

So und nun habe ich mal eine Frage, zu dem JavaScript-Schnipsel von oben, ob ich den auch benutzen kann, wenn ich nur BBCodes einfügen will in ein Textfeld oder müsste ich dort was dran verändern?

P.S. Natürlich würde ich auch ein Copyrightvermerk, vom Coder drübersetzen.
 
Original geschrieben von Andreas Gaisbauer
Hallo,

ich denke das diese Code schnippsel vom VBullitin selbst war - wie's da mit dem Copyright aussieht kann ich dir nicht sagen. Aber du kannst dir ja mal http://www.tutorials.de/tutorials130009.html anschauen - den Code kannst auch ohne Copyright hinweis verwenden - wenn du Fragen zum Code hast, einfach posten....

bye

Ja danke schön, sowas habe ich gesucht. Nur du hast da einen kleinen fehler drin und zwar in den links steht als href java script...., also die Einleitung zum JS mit Lehrzeichen.

Gruß Stefan
 
Original geschrieben von StefanR
Ja danke schön, sowas habe ich gesucht. Nur du hast da einen kleinen fehler drin und zwar in den links steht als href java script...., also die Einleitung zum JS mit Lehrzeichen.

Gruß Stefan
Das liegt nicht an mir, das Leerzeichen schreibt die Forumssoftware leider Automatisch rein :(
 

Neue Beiträge

Zurück