【问题标题】:TinyMCE is not preventing invalid elementsTinyMCE 没有阻止无效元素
【发布时间】:2016-04-10 19:20:05
【问题描述】:

我使用的是 tinyMCE 4.3.2,并且我已经初始化了 tinyMCE,如下所述。

tinymce.init({
                    selector: '#modal-content .tinymce',
                    theme: 'modern',
                    external_plugins: {
                        'lists': '/assets/js/tinymce/plugins/lists/plugin.min.js',
                        'link': '/assets/js/tinymce/plugins/link/plugin.min.js',
                        'charmap': '/assets/js/tinymce/plugins/charmap/plugin.min.js',
                        'hr': '/assets/js/tinymce/plugins/hr/plugin.min.js',
                        'searchreplace': '/assets/js/tinymce/plugins/searchreplace/plugin.min.js',
                        'paste': '/assets/js/tinymce/plugins/paste/plugin.min.js',
                        'wordcount': '/assets/js/tinymce/plugins/wordcount/plugin.min.js',
                        'visualblocks': '/assets/js/tinymce/plugins/visualblocks/plugin.min.js',
                        'visualchars': '/assets/js/tinymce/plugins/visualchars/plugin.min.js',
                        'code': '/assets/js/tinymce/plugins/code/plugin.min.js',
                        'table': '/assets/js/tinymce/plugins/table/plugin.min.js',
                        'contextmenu': '/assets/js/tinymce/plugins/contextmenu/plugin.min.js'
                    },
                    toolbar1: "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link code",
                    valid_elements: 'a[*],p[*],ul[*],li[*]',
                    invalid_elements: "script,object,embed,link,style,form,input,iframe",
                    relative_urls: true,
                    remove_script_host: true
                });

当我试图在 JavaScript 中获取价值时,它并没有阻止无效元素。它采用 iframe 、脚本和所有其他无效元素。但是在提交表单时它在 PHP 中运行良好并且当我在 post 中获取数据时。

我正在尝试从下面提到的方式中获取编辑器的价值。但它不起作用。

tinymce.triggerSave();
tinyMCE.get('editor').getContent({format : 'text'})
tinyMCE.get('editor').getContent({format : 'raw'})

我想在通过 Ajax 向服务器发送值之前防止无效元素。让我知道是否有任何最好的方法来防止无效元素。

【问题讨论】:

  • 您可以在尝试获取内容之前尝试调用 tinyMCE.get('editor').triggerSave() - 这可能会触发 tinymce 的清理功能
  • 是的,我添加了 tinymce.triggerSave();在我取值之前。
  • 您能否展示使用您的实施的实时示例?
  • 这是一个活生生的例子。如果文本中有无效元素,那么它应该像在 php.ini 中发布数据时那样剥离。但这并不能防止无效元素并在输入文本时给我。
  • 可以在可访问的网页上找到一个实时示例 - 就像一个 tinymce js fiddle(示例:fiddle.tinymce.com/pnfaab

标签: javascript tinymce tinymce-4


【解决方案1】:

您在这里所做的是将字符串 '<iframe src="google.com"></iframe>' 添加到编辑器内容中,但这不是 dom 元素,因此不会被 tinymce 删除。一切都应该如此。

【讨论】:

  • 所以你的意思是说我需要通过javascript找到html标签并手动阻止无效元素这是唯一的方法!
  • 当您的标签是字符串形式而不是编辑器中的 dom 元素时,您将不得不使用字符串操作来完成它。顺便说一句,您无法在 tinymce 编辑器中插入 iframe 标签作为真正的 dom 元素,因为 tinymce 本身使用带有自己的 head 和 body dom 元素的 iframe 来让您编辑 body dom 元素中的内容。
  • input 和 form 元素可以在 tinymce 编辑器中作为 dom 元素存在(我不确定脚本标签),但是您需要配置 tinymce 以将它们视为有效元素并将它们添加到 valid_children (其他节点),否则tinymce将从dom中删除这些元素
  • 你能给我举个例子吗?
  • valid_elements: "@[id|class|title|style|onmouseover]," + "a[name|href|target|title|alt]," + "#p,blockquote,-ol ,-ul,-li,br,img[src|height|width],-sub,-sup,-b,-i,-u," + "-span[data-mce-type],hr,script, input,form", valid_children: "body[p|ol|ul|script|input|form]" + ",p[a|span|b|i|u|sup|sub|img|hr|#text|script |input|form]" + ",span[p|a|b|i|u|sup|sub|img|#tex|script|input|formt]",
猜你喜欢
  • 2022-01-16
  • 1970-01-01
  • 2014-03-18
  • 2012-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-07
相关资源
最近更新 更多