如何在内容类型的编辑模式下将焦点设置在富文本字段上?

我想在编辑时将焦点放在项目的文本字段上,但无法克服TinymMCE的iframe踢入。当禁用TinyMCE时,一切都按预期工作,文本字段是可聚焦的。 我尝试模拟TinyMCE的body-element中的点击,也没有运气。 是否有可能通过JS关注身体场?

这是我到目前为止所尝试的:

(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加载到IFRAME中,因此它不在主文档的DOM中。 直接jQuery调用不起作用。

这是我使用的旧代码(Plone 4.3附带的TinyMCE版本):

 (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); 

很难看 。 最好的方法是摆脱setTimeout并在TinyMCE加载事件上附加一个处理程序,但是当我调查这个时,我发现这在Plone上并不那么容易,因为你必须改变由Plone JS完成的TinyMCE的.init()调用。

我知道这有点老了,但我确实在网上寻找解决方案,所以我在分享。 在你的tinymce.init()代码块中添加它。 如果需要,更改选择器或事件。

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