ruby-on-rails - 我无法让 ckeditor 允许除基本属性之外的任何内容,并且无法关闭/配置高级内容编辑器 (rails)

标签 ruby-on-rails ckeditor

我在 ruby​​ on rails 应用程序上运行 ckeditor 4.1.4。高级内容编辑器似乎正在剥离基本属性以外的任何内容。

例如,如果我有一个带有“这是一个测试”的单词文档,其中“是一个测试”是粗体、红色和 28 点,并且使用 clipview 显示查看剪贴板的内容

<body lang=EN-US style='tab-interval:.5in'>
<!--StartFragment-->

<p class=MsoNormal>This <b style='mso-bidi-font-weight:normal'><span
style='font-size:28.0pt;line-height:107%;color:red'>is a test</span></b><o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<!--EndFragment-->
</body>

</html>

看起来它正在获取颜色、大小和粗体属性。

但是,当我使用 ckeditor 将其粘贴到文本区域并查看 ckeditor 中的源代码时,我看到了

<p>This <strong>is a test</strong></p>

strong 以外的属性已被删除。

我在表单上的正文标签是

  <div class="field">
      <%= f.label :body %><br>
      <%= f.cktext_area :body,  :rows => 80, :cols => 120 %>
    </div>

我已经进入 C:\Ruby200\lib\ruby\gems\2.0.0\gems\ckeditor-4.1.4\app\assets\javascripts\ckeditor\config.js 并添加了

config.allowedContent = true;
config.extraAllowedContent = '*(*);*{*}';
config.removeFormatAttributes = '';

CKEDITOR.editorConfig = function( config )
{
  // Define changes to default configuration here. For example:

我尝试在 block 中添加三个配置行,但没有用。我阅读了有关将它们添加到配置 block 之外的建议,所以我尝试了。我确实重新启动了服务器,但它仍然删除了附加属性。

这是一个 Intranet 应用程序,考虑到我们的情况,我不担心内容过滤。我只希望用户能够复制和粘贴所有属性。

------ 编辑 1

我查看了页面的源代码,看到了

//<![CDATA[
(function() { if (typeof CKEDITOR != 'undefined') { if (CKEDITOR.instances['document_body'] == undefined) { CKEDITOR.replace('document_body', {"allowedContent":true}); } } else { setTimeout(arguments.callee, 50); } })();
//]]>
</script>

我不确定 allowedContent 语句是否应该起作用。

最佳答案

有很多方法可以configure CKEditor ,但最简单的方法是将对象作为第二个参数传递给 CKEDITOR.replace(正如您上一段代码中所示)。

但是 allowedContent: true 可能不足以启用粘贴任何内容,因为 CKE 中也有粘贴过滤器,在 Chrome 和 Safari 中默认启用。如果您使用的是该浏览器,CKE 将去除所有类、样式以及 divspan 元素。要禁用该行为,您还应该将 pasteFilter 选项设置为 null:

var editor = CKEDITOR.replace( 'editor', {
    allowedContent: true,
    pasteFilter: null
} );

如果你不想弄乱配置 CKE,你也可以即时禁用粘贴过滤器:

editor.on( 'instanceReady', function() {
    editor.pasteFilter.disable();
} );

然而,禁用该过滤器会导致生成非常困惑的 HTML,因此请注意!

有关粘贴过滤器的更多信息,请参阅 official documentation .

---编辑:

请注意,如果您主要从 Word 进行粘贴,那么还有专用于这种情况的配置选项:pasteFromWordRemoveFontStylespasteFromWordRemoveStyles .

关于ruby-on-rails - 我无法让 ckeditor 允许除基本属性之外的任何内容,并且无法关闭/配置高级内容编辑器 (rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857527/

相关文章:

angular - "Uncaught SyntaxError: Unexpected token <"当 Ckeditor javascript lib 在 Angular2 的 index.html 中加载时

javascript - Bootstrap Sass 3.3.6 - Javascript - 导航栏下拉菜单 - 不扩展

ruby-on-rails - Rails ActionController::实时连接断开

javascript - Chrome 和 Safari 中的 CKEditor 文本区域超出框范围

javascript - CKEditor 中断 <div>

php - CKEditor 输出为 BBcode 格式而不是 HTML

mysql - 如何在不发生 Rails 冲突的情况下将相同的数据分发给多个用户

ruby-on-rails - 调用函数直到(有调用限制)

ruby-on-rails - Rails 是否提供默认 session 超时时间?如果是,它在哪里指定?

javascript - CKEditor 5 htmlEncodeOutput 不起作用