我想在编辑时将焦点初始设置为项目的文本字段,但无法克服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);
答案 0 :(得分:2)
我知道这有点老了,但我肯定很难在网上寻找解决方案,所以我正在分享。在你的tinymce.init()代码块中添加它。如果需要,可以更改选择器或事件。
selector: "textarea.tinymce",
setup: function (editor) {
editor.on('mouseup', function (e) {
this.focus();
});
}
答案 1 :(得分:1)
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上这不是那么容易,因为你必须改变TinyMCE的.init()
调用通过Plone JS。