具有tinyMCE的textarea的setContent

时间:2012-08-02 15:22:21

标签: javascript tinymce textarea

我有一些textareas,所有这些都是tinyMCE。

我想设置特定文本区域的内容,但我找不到如何。

我试过这个:

 tinyMCE.get('title').setContent(selected_article_title);

这是我的textarea:

<textarea style="width: 95%;" name="Title"  id="title"></textarea>

这是我的tinyMCE init:

tinyMCE.init({
// General options
mode : "specific_textareas",
theme : "advanced",
width: "100%",
plugins : "pagebreak,paste,fullscreen,visualchars",

// Theme options
theme_advanced_buttons1 : "code,|,bold,italic,underline,|,sub,sup,|,charmap,|,fullscreen,|,bullist,numlist,|,pasteword",
theme_advanced_buttons2 :"",
theme_advanced_buttons3 :"",
theme_advanced_buttons4 :"",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
valid_elements : "i,sub,sup",
invalid_elements : "p, script",
editor_deselector : "mceOthers"
});

我不知道为什么这不起作用,我使用了tinyMCE网站上的例子http://www.tinymce.com/wiki.php/API3:method.tinymce.Editor.setContent

8 个答案:

答案 0 :(得分:13)

我有解决方案(Thariama给了我一些元素)

要使用tinyMCE设置textarea的内容,我们必须在初始化tinyMCE之前填写textarea。此外,答复如下:

  1. 创建textarea:

    <textarea style="width: 95%;" name="Title"  id="title"></textarea>
    
  2. 设置textarea的内容:

    $('#title').html(selected_article_title);
    
  3. 初始化tinyMCE:

    tinyMCE.init({
    // General options
    mode : "specific_textareas",
    theme : "advanced",
    width: "100%",
    plugins : "pagebreak,paste,fullscreen,visualchars",
    
    // Theme options
    theme_advanced_buttons1 : "code,|,bold,italic,underline,|,sub,sup,|,charmap,|,fullscreen,|,bullist,numlist,|,pasteword",
    theme_advanced_buttons2 :"",
    theme_advanced_buttons3 :"",
    theme_advanced_buttons4 :"",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    valid_elements : "i,sub,sup",
    invalid_elements : "p, script",
    editor_deselector : "mceOthers"
    });
    
  4. 它已经完成了!享受。

答案 1 :(得分:10)

对于tinymce版本4,

tinymce.get('title').setContent(selected_article_title);

工作得很好 - 也就是在初始化编辑器之后。

答案 2 :(得分:9)

我认为这将解决您的问题

适用于TinyMCE v:4。

// Sets the HTML contents of the activeEditor editor
tinyMCE.activeEditor.setContent('<span>some</span> html');

// Sets the raw contents of the activeEditor editor
tinyMCE.activeEditor.setContent('<span>some</span> html', {format : 'raw'});

// Sets the content of a specific editor (my_editor in this example)
tinyMCE.get('my_editor').setContent(data);

// Sets the bbcode contents of the activeEditor editor if the bbcode plugin was added
tinyMCE.activeEditor.setContent('[b]some[/b] html', {format : 'bbcode'});

代码的链接是TinyMCE setContent

答案 3 :(得分:2)

在TinyMCE 5中,您可以使用setContent()方法执行此操作。

假设您已使用id=”myTextarea”在文本区域初始化了编辑器。首先使用相同的ID访问编辑器,然后调用setContent()。例如:

tinymce.get('#myTextarea').setContent('<p>Hello world!</p>');

或者,您可以访问活动编辑器

tinymce.activeEditor.setContent('<p>Hello world!</p>');

此处有更多信息和示例:https://www.tiny.cloud/blog/how-to-get-content-and-set-content-in-tinymce

答案 4 :(得分:1)

使用此

tinyMCE.get('title').setContent(selected_article_title);

不起作用。它将设置您的编辑器内容。

要设置编辑器源html元素(textarea),您需要使用

直接设置它
$('#title').html(selected_article_title);

您需要知道您的编辑器与textarea不同!

答案 5 :(得分:0)

如果您设置的内容包含 mso 标记(例如,从outlook2013生成的html内容,其中包含编号列表),则会松散列表元素。设置 tinymce.activeEditor.setContent(foo)首先设置textarea内容然后初始化tinymce 会得到相同的结果,我们无法正确查看列表元素,它们是左对齐的。但是如果我们使用setContent(foo, { format:'raw' })进行设置,我们就会正确地看到列表元素。为什么呢?

答案 6 :(得分:0)

以下适用于tinymce版本4,并且在拖动时不会将编辑器显示为textarea:

function initializeEditors() {
    var editorContent = {};
    $("#photo-list").sortable({
        start: function (e, ui) {
            $('.attachment-info').each(function () {
                var id = $(this).attr('id');
                editorContent[id] = tinyMCE.get(id).getContent();
            });
        },
        stop: function (e, ui) {
            $('.attachment-info').each(function () {
                var id = $(this).attr('id');
                tinymce.execCommand('mceRemoveEditor', false, id);
                tinymce.execCommand('mceAddEditor', true, id);
                tinyMCE.get(id).setContent(editorContent[id]);
            });
        }
    });
}

答案 7 :(得分:0)

class LessonDataHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public BlurLayout samplelayout;
    private TextView nameOfSlip;
    private ImageView slipImage;
    private Context context;


    public LessonDataHolder(View itemView) {
        super(itemView);


        context = itemView.getContext();
        nameOfSlip = (TextView) itemView.findViewById(R.id.demoText);
        slipImage = (ImageView) itemView.findViewById(R.id.imageViewDemoVideo);
        samplelayout = (BlurLayout) itemView.findViewById(R.id.blur_layout);

        slipImage.setOnClickListener(this);
    }

    public void bindSlip(VideoList videoList) {
        nameOfSlip.setText(videoList.stringSlipName);
        slipImage.setImageResource(videoList.stringImage);
    }

    @Override
    public void onClick(View view) {

        if (view.getId() == slipImage.getId()) {

            Toast.makeText(view.getContext(), "Chapter = " + String.valueOf(getAdapterPosition()+1), Toast.LENGTH_SHORT).show();

            BlurLayout.setGlobalDefaultDuration(1000);

            View hover4 = LayoutInflater.from(view.getContext()).inflate(R.layout.hover_card_view, null);
            samplelayout.setHoverView(hover4);
            samplelayout.setBlurDuration(2000);

            samplelayout.addChildAppearAnimator(hover4, R.id.hover_play_video, Techniques.SlideInRight);
            samplelayout.addChildDisappearAnimator(hover4, R.id.hover_play_video, Techniques.SlideOutLeft);

       }}}}

确保selected_article_title不包含任何html标记。