TinyMCE: Wie binden Sie auf Ereignis nach seiner initialisiert
Ich such schon eine ganze Menge, aber durch google-fu'ing nicht bekommen, mir irgendwelche Ergebnisse 🙁
Habe ich ein bereits initialisiert tinyMCE
editor die Initialisierung Prozess, den ich nicht kontrollieren kann, so dass code wie der folgende nicht funktionieren:
tinyMCE.init({
...
setup : function(ed) {
ed.onChange.add(function(ed, l) {
console.debug('Editor contents was modified. Contents: ' + l.content);
});
}
});
Code wie der folgende funktioniert auch nicht, da die jQuery tinymce plugin ist nicht definiert:
$('textarea').tinymce({
setup: function(ed) {
ed.onClick.add(function(ed, e) {
alert('Editor was clicked: ' + e.target.nodeName);
});
}
});
Ich meine, es hat mit der tinymce.something
syntax.
Wie kann ich binden, callback-Funktion, die unabhängig von tinyMCE Veranstaltung nach der tinyMCE ist bereits initialisiert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem Hacker in das tinymce-Editor-Objekt mit console.log(), fand ich eine funktionierende Lösung:
Innen, die callback-Funktion kann man den jedem Fall verbindlich will.
Den
setTimeout
Aufruf zur überwindung der racing Zustandtinymce
undjQuery
, da beim Aufruftinymce.editors[i].onChange.add()
gemacht wird tinymce nicht initialisiert, noch nicht.Obwohl dieser Beitrag nun alt ist, aber ich denke, andere Leute müssen diese beantworten. Ich hatte das gleiche problem und um es zu beheben ich Tat dies:
Basierend auf http://www.tinymce.com/wiki.php/Configuration3x:init_instance_callback
EDIT: oops - ich dachte, das war eine andere Frage ich war auf der Suche zu diesem speziellen WordPress - + TinyMCE, denke nicht. Aber ich lasse die Antwort hier kann es hilfreich sein für andere.
Den richtigen Weg, dies zu tun wäre, zum Anhängen an die tinyMCE init mit der WordPress-filter. Zum Beispiel:
PHP (in functions.php oder an einen anderen Ort führen Sie auf Bearbeiten, laden der Seite):
JavaScript (/js/admin/admin.js)
Dies ist getestet und funktioniert in WordPress 3.9 (obwohl ich bin einfach immer die Ausgabe der Konsole:
Aber das ist aufgrund der tinyMCE veralteten code, den Sie versuchen zu verwenden. Diese Methode funktioniert immer noch, um zu ändern, um eine der tinyMCE init - Optionen-ich bin derzeit mit es für
init_instance_callback
es funktioniert und es ist toll.-Thomas
Hier ist meine Lösung für die verbindliche Ereignisse an eine oder mehrere Texteingabefelder zu jeder Zeit, angesichts dieser code ist angehängt nach Einbindung des tinymce javascript-Datei in Ihre Seite. (In anderen Worten, das einzige, was erforderlich für diese zu arbeiten, ist die Existenz der 'tinymce' - variable).
Beachten Sie, dass der 'change' - Ereignis ist nicht verpflichtet, immer trigger sofort, nachdem sich etwas geändert hat. Laut der Dokumentation, es "wird ausgelöst, wenn sich änderungen im editor, die zu einem undo-Ebene Hinzugefügt werden." Die in meiner Erfahrung passiert nicht immer, wenn Sie erwarten, dass es geschehen wird.
Einen Weg, dies zu überwinden, ist durch die Bindung mehrerer Ereignisse, wie "input ändern", es gibt jedoch einige überschneidungen, die dann gefiltert werden.
In TinyMCE 4, onChange, gibt es nicht. Sie haben zu verwenden: