2016-07-21 4 views
1

Ich habe eine Seite mit einer Leinwand, wo ein Benutzer Text mit der Schaltfläche "Text hinzufügen" hinzufügen kann. Wenn der Benutzer darauf klickt, wird ein neues TinyMCE direkt auf der Zeichenfläche erstellt. Ich möchte dieses neue TinyMCE ändern, aber da ich nicht auf den tinyMCE-Erstellungscode (den Init) zugreifen kann, habe ich in "document.ready()" eine Art "in-init-Listener" für TinyMCE.Wie kann ich feststellen, ob TinyMCE auf einer Seite initiiert/erstellt wurde?

Ich weiß, dass Sie einen Rückruf auf init des TinyMCE wie diese machen können:

setup: function (ed) { 
    ed.on('init', function(args) { 
     console.debug(args.target.id); 
    }); 
} 

Aber wie gesagt ich die Schaffung Code des TinyMCE nicht erreichen kann.

Wie kann ich prüfen, ob eine neue TinyMCE-Instanz erstellt wurde (und in Javascript verwendet wird)?

+0

Was genau möchten Sie tun, wenn Sie wissen, dass TinyMCE erstellt wurde? Die Funktion, die Sie erwähnen, ist in der Tat der einfachste Weg zu wissen, wann TinyMCE bereit ist ... aber ich würde gerne wissen, was Sie tun wollen, was nicht über diesen API-Hook möglich ist. –

+0

Ich möchte die Symbolleiste ändern, wenn der tinyMCE bereit ist. Beachten Sie, dass ich die TinyMCE-Init-Konfiguration nicht ändern kann. Daher kann ich die Funktion, die ich in meiner Frage beschrieben habe, nicht verwenden. – moffeltje

+0

TinyMCE erlaubt es Ihnen nicht, die Symbolleiste zu ändern, sobald der Editor geladen ist. Selbst wenn Sie das init-Objekt nicht direkt ändern können, können Sie immer JavaScript verwenden, um das init-Objekt zu ändern, bevor Sie TinyMCE tatsächlich damit aufrufen. –

Antwort

1

Wenn Ihre Seite Ihnen ein Konfigurationsobjekt zur Verfügung stellt, Sie aber ihre Einstellungen optimieren möchten, können Sie JavaScript immer verwenden, um Ihre Standardinitialisierung seitenweise zu ändern/zu erweitern.

Zum Beispiel mit Standardkonfiguration starten:

baseConfig = { 
    selector: 'textarea' 
    .... 
} 

... da dies nur ein einfaches JavaScript-Objekt ist, können Sie zusätzliche Eigenschaften/Methoden in dieses Objekt injizieren, bevor Sie es verwenden TinyMCE zu initialisieren.

Zum Beispiel:

customConfig = { 
    image_advtab: true, 
    content_css : "CSS/content.css?" + new Date().getTime(), 
    setup: function (editor) { 
     editor.on('init', function() { 
      //Do what you need to do once TinyMCE is initialized 
     }); 
    } 
} 

Dann können Sie "injizieren" customConfig in baseConfig. Der einfachste Weg ist jQuery erweitern Methode zu verwenden:

$.extend(baseConfig, customConfig); 

... dies wird alle Methoden und Eigenschaften von customConfig und fügen Sie sie zu baseConfig. Sobald Sie fertig sind, können Sie dann laden TinyMCE mit der neu baseConfig aktualisiert:

tinymce.init(baseConfig); 

Sie können auch JavaScript verwenden, um Eigenschaften zu entfernen (lesen Sie auf der delete), so dass Sie könnte auch Konfigurationseigenschaften entfernen, die Sie nicht möchten, in Ihrem TinyMCE-Init.

Verwandte Themen