Catch verandering in inhoud van HtmlEditor in ExtJS 4

Ik wil vastleggen wanneer de gebruiker de inhoud van een HtmlEditor in ExtJS 4 verandert. Ik heb de synchronisatie geprobeerd, verander en push alle gebeurtenissen zonder succes. Synchronisatie lijkt te worden afgevuurd telkens als er focus wordt verkregen, verandering niet wordt geactiveerd en ik niet kan zeggen wat de oorzaak is van pushen.

Kan iemand vertellen welke gebeurtenis wordt afgevuurd wanneer de gebruiker de inhoud van een HtmlEditor wijzigt?

Bedankt

Bewerk: Ik heb de volgende code geprobeerd die niet werkt voor mij, geen ideeën?

init: function() {
    this.control({
        'htmleditor[name="reportHtmlEditor"]': {
            render: this.addKeyHandler
        }
    });
},

addKeyHandler: function(field) {
   //This gets called fine on the component render
    var el = field.textareaEl;
    if (Ext.isGecko) {
        el.on('keypress',
        function() {
           //Do Stuff, which never gets called
        }, this, { buffer: 100});
    }
    if (Ext.isIE || Ext.isWebKit || Ext.isOpera) {
        el.on('keydown',
        function() {
           //Do Stuff, which never gets called
        }, this, { buffer: 100});
    }
},

Voor meer informatie, gebruik ik Firefox om dit te testen, en ik kreeg de andere informatie van dit bericht.

3

1 antwoord

Het lijkt erop dat er tekstarea wordt gebruikt voor het bewerken van de bron. Dit veld, net als elke andere in html, vuurt gebeurtenis wijzigen pas na vervaging (HtmlEditor lijkt te vertrouwen op deze gebeurtenis). U moet waarschijnlijk binden aan een andere gebeurtenis, bijvoorbeeld keydown en vervolgens, afhankelijk van de ingedrukte toets, de juiste gebeurtenis activeren. U kunt dit doen in de render-handler:

{
    xtype: 'htmleditor',
    listeners: {
        render: function(){
            this.textareaEl.on('keydown', function() {
                this.fireEvent('sync', this, this.textareaEl.getValue());
            }, this, { buffer: 500 });
        },
        sync: function(sender, html){
            debugger;
        }
    }
}
2
toegevoegd
Ik heb een voorbeeld een beetje uitgebreid. Ik hoop dat het genoeg is
toegevoegd de auteur Krzysztof, de bron
Ik probeer dit te implementeren, maar ik kan niet achterhalen wat textareaEl moet zijn.
toegevoegd de auteur Jon, de bron
Ik heb wat meer info toegevoegd aan mijn vraag, neem alsjeblieft een kijkje.
toegevoegd de auteur Jon, de bron