Suche Tagcloud Kommentare RSS
Youtube-Video Sperren umgehen

diese trick funktioniert schon lange nicht mehr bei Videos mit Urheberrechten. "This video contains content from Sony Music Entertainment. It is no...
- pj
Youtube-Video Sperren umgehen

funktioniert nicht ganz... wenn ich nach aufrufen der Seite nach Anleitung den Play-butten drücke kommt wieder --> video nicht verfügbar...
- GoonDesert
Multi-Columns für Jedermann

Bisher hat sich diesbezüglich zumindest noch nichts gravierendes getan. Man findet es zwar sproradisch auf der ein oder anderen Seite, ansonsten...
- Webstandard-Team
2009   beautify the web   Überwachung   web-design   deutschland   tutorials   zensur   linux   ccc   bcc   reviews   congress   usability   trends   berlin   2008   webstandards   schäuble   arbeit   2007   24c3   ubuntu   25c3   23c3   spaß am gerät   persönlich   termine   hacking   vorträge   politisch  

AJAX Anfragen-Ärger

FCKeditor WindowZusammengerechnet elf Tage habe ich damit zugebracht, eine AJAX-Artikelvorschau für mein CMS "BeautifyWeb" zu schreiben. Schuld tragen die Abwesenheit meines eigentlichen Arbeitsgeräts, das Mysterium deutscher Sonderzeichen in Kodierungen, die Problematik multipler simultaner XMLHttpRequests sowie im Endspurt eine unzureichende Dokumentation meines Lieblings-WYSIWYG-Editors "FCKeditor". Zumindest vor letzterem möchte ich Euch mit diesem Artikel bewahren.

Nachdem ich meine handgeschriebene AJAX-Datenübermittlung für die Vorschau-Funktion wegen der Problematik mehrerer simultaner XMLHttpRequest-Objects in die sprichwörtliche Tonne gehauen hatte, kam ich auf die Idee, die extrem sauber und elegant geschriebene ajaxAutoSave-Funktion, die ich bereits in meinem CMS im Einsatz hatte, für meine Zwecke zu benutzen.

Mit eigentlich einfachen API-Befehlen an eine Instanz des FCKeditor sollten extern gesammelte Werte in den Editor geschrieben und dann via eines externen Auslösens der ajaxAutoSave-Funktion an den Server übermittlet werden. Dann sollte der Editor in seinen vorherigen Zustand zurückgesetzt werden. User würden von dieser Manipulation nichts merken und ich konnte auf bestehende und bereits funktionierende Strukuren aufbauen - Es hätte eine Win-Win Situation sein sollen.

Leider machte mir die unzureichende Dokumentation der Javascript-API des FCKeditors einen Strich durch die Rechung: Mehrere Stunden versuchte ich, mit folgenden Code-Stücken zum Erfolg zu kommen:

FCKeditorAPI.GetInstance('INSTANZNAME').GetData(true);
Dieser Befehl holt die aktuellen Inhalte einer FCKeditor-Instanz ab.

FCKeditorAPI.GetInstance('INSTANZNAME').SetData(VARIABLENNAME);
Dieser Befehl sollte eigentlich die kombinierten Werte in die Instanz des Editor schreiben, damit diese übermittelt werden können.

FCKeditorAPI.GetInstance('INSTANZNAME').Commands.GetCommand('ajaxAutoSave').Execute();
Mit diesem Befehl kann z.B. die registrierte Funktion "ajaxAutoSave" extern ausgelöst werden. Dies gilt für alle registrierten Funktionen innerhalb des FCKeditors. Quasi jedes Plugin muss sich als Funktion registrieren. Dies macht den externen Zugriff auf FCKeditor-Funktionen extrem einfach.

Hier das Problem: Zwar hatte ich schnell gelernt, dass die so oft in Forenbeiträgen angesprochenen Befehle GetXHTML und SetHTML mittlerweile deprecated waren und durch obiges GetData bzw. SetData ersetzt wurden, aber nach einigem Debugging wurde klar, dass SetData die nötigen Daten so eintrug, dass deren Übertragung via AJAX einen Fehler in der XML-Response (XML response is null) auslöste.

Rettung kam nach langem Debugging und Scrooglen durch einen Bugreport für das Spellerchecker-Plugin in IE7. Hier wurde:

FCKeditorAPI.GetInstance('INSTANZNAME').InsertHtml(VARIABLENNAME);

InsertHTML anstatt SetData benutzt. InsertHTML tauchte nicht in der API-Dokumentation auf. Trotzdem versuchte ich in meiner Verzweifelung mein Glück und siehe da! Es funktionierte! Offenbar behandelt "InsertHTML" die einzusetzenden Werte derart, dass sie urlencoded übergeben werden können, ohne dass die XML-Response ausbleibt und das gesamte AJAX-Script stirbt.

Falls Ihr also einmal auf Probleme mit übermittelten Werten aus FCKeditor haben solltet und zum Einsetzen der Werte in die Editor-Instanz SetData benutzt, dann versucht einmal Euer Glück mit "InsertHTML"! Mir leistet es gute Dienste. Bedenkt aber: Sowohl "insertHTML" als auch "SetData" brauchen einige Zeit, um einzusetzende Werte zu verarbeiten. Ihr solltet daher am besten einen Event-Listener benutzen, der prüft, ob das Einfügen der Werte in die Editor-Instanz vollständig ist.

Geschrieben am 16.09.2008

Zurück

0 Kommentare

Es können keine neuen Kommentare abgegeben werden.