TinyMCE: Wie bind on-Ereignis nach seiner Initialisierung

7

Ich habe schon viel gesucht, aber durch google-fu 'ing bekommst du keine Ergebnisse: (

Ich habe einen bereits initialisierten tinyMCE -Editor, dessen Initialisierung ich nicht kontrollieren kann, also funktioniert folgender Code gar nicht:

%Vor%

Code wie der folgende funktioniert auch nicht, da das jQuery tinymce-Plugin nicht definiert ist:

%Vor%

Ich meine, es muss die tinymce.something Syntax verwenden.

Wie kann ich eine Rückruffunktion an ein beliebiges tinyMCE-Ereignis binden, nachdem tinyMCE bereits initialisiert wurde?

    
diosney 29.08.2013, 15:24
quelle

5 Antworten

9

Nachdem ich mit console.log () in das tinymce-Objekt gehackt habe, habe ich eine funktionierende Lösung gefunden:

%Vor%

Innerhalb dieser Callback-Funktion kann man die gewünschte Event-Bindung einstellen.

Der Aufruf setTimeout soll die Rennbedingungen von tinymce und jQuery überwinden, denn wenn der Aufruf von tinymce.editors[i].onChange.add() gemacht wird, wurde tinymce noch nicht initialisiert.

    
diosney 29.08.2013, 16:22
quelle
8

Obwohl dieser Beitrag jetzt alt ist, denke ich, dass andere Leute diese Antwort brauchen werden. Ich hatte das gleiche Problem und um es zu beheben, tat ich das:

%Vor%

Basiert auf Ссылка

    
Luci 20.01.2014 16:11
quelle
3

BEARBEITEN: oops - Ich dachte, das ist eine andere Frage, die ich mir angesehen habe, die spezifisch für WordPress + TinyMCE war, rate nicht. Obwohl ich die Antwort hier belassen werde, da sie für andere hilfreich sein kann.

Der richtige Weg, dies zu tun wäre, an die tinyMCE init mit dem WordPress-Filter anzuhängen. Zum Beispiel:

PHP (in functions.php oder an einem anderen Ort, der beim Laden der Seite ausgeführt wird):

%Vor%

JavaScript (/js/admin/admin.js)

%Vor%

Das ist getestet und funktioniert in WordPress 3.9 (obwohl ich einfach die Konsolenausgabe bekomme:

%Vor%

Aber das liegt an dem veralteten Code von tinyMCE, den Sie zu verwenden versuchen. Diese Methode funktioniert immer noch, um sie an eine der tinyMCE-Init-Optionen anzupassen - ich verwende sie momentan für init_instance_callback und sie funktioniert großartig.

-Thomas

    
tsdexter 30.07.2014 18:50
quelle
2

In TinyMCE 4 existiert onChange nicht. Sie müssen verwenden:

%Vor%     
Ed Zavada 12.10.2016 17:30
quelle
2

Hier ist meine Lösung für das Binden von Ereignissen zu einem oder mehreren Textareas zu jeder Zeit, vorausgesetzt, dieser Code wird angehängt, nachdem die JavaScript-Datei von tinymce in Ihre Seite eingefügt wurde. (Mit anderen Worten, das einzige, was dafür erforderlich ist, ist die Existenz der 'tinymce' -Variable)

%Vor%

Beachten Sie, dass das Ereignis "change" nicht immer sofort ausgelöst wird, nachdem sich etwas geändert hat. Laut der Dokumentation wird es "gefeuert", wenn Änderungen im Editor vorgenommen werden, die eine Undo-Ebene verursachen hinzugefügt werden. "Was meiner Erfahrung nach nicht immer geschieht, wenn Sie erwarten, dass es passiert.

Eine Möglichkeit, dies zu umgehen, besteht darin, mehrere Ereignisse zu verknüpfen, z. B. "Eingabe ändern". Es gibt jedoch einige Überlappungen, die dann gefiltert werden sollten.

    
Gabe Hiemstra 13.03.2017 14:06
quelle