如何在文本上使用TinyMCE函数而不实际选择该文本?

use*_*627 5 jquery tinymce caret

<div>我的页面上有各种各样的s,当点击它时,会转换为TinyMCE编辑器部分.因此,用户只需双击div,然后使用TinyMCE编辑其中的文本.

我的问题是 - 是否可以在<div>没有实际选择文本的情况下运行TinyMCE功能?我的意思是,我想实现以下用例:

  1. 用户点击了一个<div>.
  2. <div> 激活TinyMCE会话本身.
  3. 用户现在可以使用TinyMCE工具栏上的按钮编辑div中的所有文本,而无需使用光标手动选择文本.否则通常的情况是用户必须选择一些文本,并且只有这个选定的文本将由TinyMCE工具编辑.

如何实施,以及它有多容易?

编辑

澄清:我并不仅仅意味着TinyMCE编辑器会自动选择所有文本进行更改,但我的意思是,如果没有选择,是否可以格式化?我的目标是让用户能够编辑只格式化一个的<div>使用TinyMCE的,但不能够改变文本自身.我实际上不希望用户能够选择任何文本,只需单击<div>,这应该自动允许包含的文本由TinyMCE 格式化,而不会实际更改其文本.但是,如果你知道我的意思,textarea不应该为用户"选择".它可以根据需要选择自己(根据@ Thariama的解决方案),但不是由用户选择.这可能吗?有点像只启用TinyMCE工具栏按钮但禁用文本编辑功能.据我所知,我不能使用readonlyTinyMCE 的配置它还禁用所有格式化选项的工具栏(如文本高亮,粗体,斜体等).

use*_*627 1

我的答案是使用 @Thariama 的设置代码的组合:

tinyMCE.init({ ....
    setup : function(ed) {  
    ed.onInit.add(function(ed, evt) {

        ed.getBody().setAttribute('contenteditable', false);

        var range = ed.selection.dom.createRng();

        range.setStartBefore(ed.getBody().firstChild);
        range.setEndAfter(ed.getBody().lastChild);
        ed.selection.setRng(range);
    });
}
});
Run Code Online (Sandbox Code Playgroud)

通过一种方法来禁用文本区域中的按键,即如果我的文本区域的 ID 为TAID,那么我添加了以下代码:

$('#TAID_ifr').contents().find('html').bind('keypress', function(e){return false;});