[JS] Link in RTE-Area einfügen

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

ich erstelle gerade eine RichTextEditing-Area für den Firefox! Im gegensatz zum IE kann man somit mal richtig programmieren. Doch bin ich auf ein kleines Problem gestoßen:

Um eine Grafik/Tabelle etc. einzufügen, habe ich mir folgenden Code erarbeitet (u.a. durch recherchen im Internet):

Code:
   function insert() {
   if(document.all) {
    // IE only
   } else {
    e = document.getElementById("edit");
    img = e.contentWindow.document.createElement("img");
    img.setAttribute("src", "Pfad");
    img.setAttribute("title", "Titel der Grafik");
    insertHTMLatSel(e.contentWindow, img);
   }
}

Wenn "insert()" aufgerufen werden würde, so wäre der HTML-Quellcode in der RTE-Area folgender:
HTML:
<img src="Pfad" title="Titel der Grafik" />

Soweit ist ja noch alles klar! Aber was mache ich, wenn ich eine Link einfügen möchte? Der HTML-Quellcode würde ja folgendermaßen aussehen:
HTML:
<a href="Seite">Link</a>

Das Attribut "href" kann ich ja noch setzen, doch wie setze ich die "Link-Caption"?
Code:
    a = e.contentWindow.document.createElement("a");
    a.setAttribute("href", "Seite");
    
    // ????? Wie setze ich "Link" (Beschriftung des Links)?

    insertHTMLatSel(e.contentWindow, a);
CPU:(
 
Ich bin noch JS neuling und habe auch noch nie "contentWindow.document.createElement" benutzt, aber ich denke in deinem Fall müsstest du innerHTML benutzen. Also erst den Link erzeugen mit einer ID oder Namen und einer "dummy Link Beschreibung" wie <a href="Link" id="meinLink">-</a> und dann solltest du mit getElementById("meinLink").innerHTML den Text zwischen <a> und </a> ändern können.
 
Danke vorab,
ich werde es versuchen ...

---------------------------------------------------
Edit: Das habe ich gerade gefunden:

HTML:
function insertHTML(html, n) {
  // var browserName = navigator.appName;	 	 
	if (browserName == "Microsoft Internet Explorer") {	  
	  document.getElementById('wysiwyg' + n).contentWindow.document.selection.createRange().pasteHTML(html);   
	} 
	 
	else {
	  var div = document.getElementById('wysiwyg' + n).contentWindow.document.createElement("span");
		 
		div.innerHTML = html;
		var node = insertNodeAtSelection(div, n);		
	}
}

unter http://forum.jswelt.de/javascript/42154-wysiwyg-textarea-id.html
 
Zuletzt bearbeitet:
Vielen Dank! :):)

Es funktioniert wunderbar.
CPU :)
 
Zurück
Oben