TinyMCE消毒输入

时间:2014-09-10 22:55:02

标签: javascript jquery html tinymce-4

我正在尝试使用TinyMCE(版本4.1.2)作为WYSIWYG编辑器。登录用户可以编写自己的页面,并直接查看访问者访问时页面上显示的内容。

现在,我想直接存储html。例如:

登录用户看到This is my text!,但实际上TinyMCE会将其显示为<p>This is my text!</p>。还有某些样式,如<h1>和可添加的链接。

现在,用户可以插入超链接,提供应显示的链接和文本。但问题是,如果用户手动编写<a href='example.com'>Example</a>,它会在编辑器中显示,但也会以纯HTML格式存储,因此在显示时,它只是一个带有文本Example的超链接。 / p>

这是我的代码类似的样子(省略配置):

tinymce.init({
    setup: function(editor){
        editor.on('change', function(e){
            $('[name="'+editor.id+'"]').next("textarea").html(editor.getContent({format: 'html'}));
        });
    }
});

因此,TinyMCE字段中的文本会被复制到<textarea>内的<form>,该<h1>Title</h1> <p><a href="example.com">example</a></p> <p><a href="example.com">test</a></p> 会在保存时提交。

这样的事情:

TinyMCE input of user

存储为:

editor.getContent({format: 'html'})

这使我无法区分真正的链接和纯文本,因此我无法在存储数据后对其进行处理。

我已经摆弄了format: 'raw'格式选项,例如{{1}},但无济于事。我做错了什么?

1 个答案:

答案 0 :(得分:1)

希望我能正确理解你的问题。

看起来你想要显示用户在输入时输入的内容,而不是实际处理用户用HTML编写的任何HTML。我对么? 我相信这可以解决您遇到的问题:

https://kokoblog.net/php/fix-tinymce-auto-convert-html-code-to-element-tag

但是,如果您只关心它的存储位置,而不是它处理过程中的外观,那么您需要向tinyMCE添加代码块,并确保您的用户明白他们需要选择代码选项,只要他们要编写原始HTML。

    style_formats : [{title : 'Code', inline : 'code'}]

src:Add "code" button to wordpress tinyMCE

我希望这有帮助! :)