Chr*_*dla 2 ruby-on-rails ckeditor
我在rails应用程序上的ruby上运行ckeditor 4.1.4.高级内容编辑器似乎剥离了除基本属性之外的任何东西.
例如,如果我有一个带有'这是一个测试'的单词doc,其中'是一个测试'是粗体,红色和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> </o:p></p>
<!--EndFragment-->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
它似乎正在拾取颜色,大小和粗体属性.
但是,当我使用ckeditor将其粘贴到文本区域并查看ckeditor中的源代码时,我明白了
<p>This <strong>is a test</strong></p>
Run Code Online (Sandbox Code Playgroud)
除了strong之外的属性已被删除.
我在表格上的身体标签是
<div class="field">
<%= f.label :body %><br>
<%= f.cktext_area :body, :rows => 80, :cols => 120 %>
</div>
Run Code Online (Sandbox Code Playgroud)
我已进入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:
Run Code Online (Sandbox Code Playgroud)
我尝试在块内添加三个配置行,但是没有用.我读了一个关于在配置块之外添加它们的建议,所以我尝试了.我确实重新启动了服务器,但它仍然删除了其他属性.
这是一个内部网应用程序,鉴于我们的情况,我并不担心内容过滤.我只希望用户能够复制并粘贴所有属性.
------编辑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>
Run Code Online (Sandbox Code Playgroud)
我不确定allowedContent语句是否应该正常工作.
Com*_*eer 10
有很多方法可以配置CKEditor,但最简单的方法是将对象作为第二个参数传递给CKEDITOR.replace(就像你在上一段代码中所示).
但是,这allowedContent: true可能不足以启用粘贴任何内容,因为在CKE中还有粘贴过滤器,默认情况下在Chrome和Safari中启用.如果您正在使用该浏览器,CKE将剥离所有类,样式div和span元素.要禁用该行为,还应将pasteFilter选项集传递给null:
var editor = CKEDITOR.replace( 'editor', {
allowedContent: true,
pasteFilter: null
} );
Run Code Online (Sandbox Code Playgroud)
如果您不想搞乱配置CKE,您还可以动态禁用粘贴过滤器:
editor.on( 'instanceReady', function() {
editor.pasteFilter.disable();
} );
Run Code Online (Sandbox Code Playgroud)
但是,禁用该过滤器可能会导致生成非常混乱的HTML,因此请注意!
有关paste filter的更多信息,请参阅官方文档.
- -编辑:
请注意,如果您主要使用Word粘贴,则还有专门针对该情况的配置选项:pasteFromWordRemoveFontStyles和pasteFromWordRemoveStyles.