2008-08-24 21 views
1

FCKeditor verfügt über die InsertHtml-API (JavaScript API document), die HTML an der aktuellen Cursorposition einfügt. Wie füge ich am Ende des Dokuments ein?Am Ende des FCKeditors einfügen

Muss ich Browser mit so etwas wie dieses oder

if (element.insertAdjacentHTML) // IE 
    element.insertAdjacentHTML('beforeBegin', html) ; 
else        // Gecko 
{ 
    var oRange = document.createRange() ; 
    oRange.setStartBefore(element) ; 
    var oFragment = oRange.createContextualFragment(html); 
    element.parentNode.insertBefore(oFragment, element) ; 
} 

Sniffing beginnen, ist es eine gesegnete Weise, die ich verpasst?

Edit: Natürlich kann ich das ganze HTML umschreiben, wie Antworten vorschlagen, aber ich kann nicht glauben, dass das der "gesegnete" Weg ist. Das bedeutet, dass der Browser das, was er hat, zerstören und das Dokument von Grund auf neu analysieren sollte. Das kann nicht gut sein. Zum Beispiel erwarte ich, dass der Rückgängig-Stapel bricht.

Antwort

2

Es sieht so aus, als könnten Sie eine Kombination aus GetHTML und SetHTML verwenden, um den aktuellen Inhalt zu erhalten, fügen Sie Ihren HTML-Code hinzu und fügen Sie alles wieder in den Editor ein. Obwohl es heißt

Beachten Sie, dass Sie bei Verwendung dieser Methode alle Listener verlieren, die Sie zuvor im Editor.EditorDocument registriert haben.

Hoffe, dass hilft!

1
var oEditor = FCKeditorAPI.GetInstance('Editor_instance') ; 
    OldText=oEditor.GetXHTML(true); 

    oEditor.SetData(OldText+"Your text"); 
1

den Buggy Linie :element.insertAdjacentHTML('beforeBegin', html);

mit diesem jQuery-Code ersetzen:

try { 
     $(html).insertBefore($(element)); 
     // element.insertAdjacentHTML('beforeBegin', html); 

} catch (err) { } 
Verwandte Themen