¿Cómo establecer el foco en el campo de texto enriquecido, en modo de edición de un tipo de contenido?

Me gustaría establecer inicialmente el enfoque en el campo de texto de un elemento cuando lo edito, pero no puedo superar la activación de iframe de TinymMCE. Al deshabilitar TinyMCE, todo funciona como se esperaba, el campo de texto es enfocable. Intenté simular un clic en el elemento del cuerpo de TinyMCE, pero tampoco tuve suerte. ¿Es posible en absoluto, enfocar el campo del cuerpo a través de JS?

Esto es lo que intenté hasta ahora:

(function($) { $(document).ready(function() { $('#text').focus() // Only works, when TinyMCE is disabled. $('body#content').click() // Cannot click into TinyMCE's body. $('#text_bold').click() // Cannot even click one of the editor's buttons. setTimeout(function() { // Tried same as above with time-delay, no luck. }, 277); }); $(window).load(function() { // Tried the same as in doc.ready, no luck. }); })(jQuery); 

TinyMCE se carga dentro de un IFRAME por lo que no está en el DOM del documento principal. Las llamadas directas a jQuery no funcionarán.

Este es un código antiguo que utilicé (versión TinyMCE incluida con Plone 4.3):

 (function($) { function checkTinyMCELoaded () { if (window.tinymce==undefined || !tinymce.editors.length) { setTimeout(checkTinyMCELoaded, 100); return; } $('#text_ifr').contents().find(".mceContentBody").get(0).focus(); } $(document).ready(function() { setTimeout(checkTinyMCELoaded, 100); }); })(jQuery); 

Es feo La mejor manera es deshacerse de setTimeout y adjuntar un controlador en el evento de carga TinyMCE, pero cuando miré esto encontré que esto no es tan fácil en Plone, ya que debe cambiar la llamada .init() de TinyMCE hecha por Plone JS.

Sé que es algo viejo, pero definitivamente tuve problemas para encontrar una solución para esto en línea, así que lo comparto. Agregue esto, en su bloque de código tinymce.init (). Cambie el selector o evento si es necesario.

 selector: "textarea.tinymce", setup: function (editor) { editor.on('mouseup', function (e) { this.focus(); }); }