Froala 代码片段在编辑时丢失分界线
Froala code snippet losing breaklines on edit
我正在 RoR 中创建一个简单的博客。
当我编辑 post 时,我丢失了代码片段中的所有换行符。
我如何确保在重新加载 post 的内容时,编辑器正确地格式化了代码片段?
这是文本编辑器的输入:
A
B
这是使用自定义按钮生成的 froala 编辑器中的源代码:
<pre><code>A
B</code></pre>
这是插入数据库的数据:
"<pre><code>A\r\nB</code></pre>"
这是它在网页上的样子:
这是我尝试更新 post:
时在 Froala 编辑器中的样子
这次源代码是这样的:
<pre><code>AB</code></pre>
这是自定义按钮的代码:
customButtons: {
insertCode: {
title: 'Insert code',
icon: {
type: 'font',
value: 'fa fa-code'
},
callback: function() {
if (!this.selectionInEditor()) {
this.$element.focus(); // Focus on editor if it's not.
}
var html = '<pre><code>' + (this.text() || '​') + '<span class="f-marker" data-type="false" data-id="0" data-fr-verified="true"></span><span class="f-marker" data-type="true" data-id="0" data-fr-verified="true"></span></code></pre>';
this.insertHTML(html);
this.restoreSelectionByMarkers();
this.saveUndoStep();
}
}
}
------------------------更新-------------------- ----------
问题似乎出在 froala 启动函数上:
第一步:
使用以下内容创建文本区域:
<textarea id="froalaedit" name="content">
<pre><code>A
B</code></pre>
</textarea>
第 2 步:
添加一个按钮来启动 froala 编辑器:
<button onclick="myFunction()">Click me</button>
<script>
function myFunction(){
$('textarea#froalaedit').editable({
inlineMode: false,
buttons: ['html', 'removeFormat', 'sep', 'undo', 'redo', 'sep', 'insertHorizontalRule', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'sep', 'fontFamily', 'fontSize', 'color', 'sep', 'formatBlock', 'blockStyle', 'align', 'sep', 'insertOrderedList', 'insertUnorderedList', 'sep', 'createLink', 'insertImage', 'insertVideo', 'table', 'uploadFile', 'fullscreen', 'insertCode'],
minHeight: 200,
customButtons: {
insertCode: {
title: 'Insert code',
icon: {
type: 'font',
value: 'fa fa-code'
},
callback: function() {
if (!this.selectionInEditor()) {
this.$element.focus(); // Focus on editor if it's not.
}
var html = '<pre><code>' + (this.text() || '​') + '<span class="f-marker" data-type="false" data-id="0" data-fr-verified="true"></span><span class="f-marker" data-type="true" data-id="0" data-fr-verified="true"></span></code></pre>';
this.insertHTML(html);
this.restoreSelectionByMarkers();
this.saveUndoStep();
}
}
}
})
};
</script>
第 3 步:按下按钮时复制行为。
--------------------固定------------------------
做了这个:
<div id="eg-textarea"><%= @post.content.html_safe %></div>
而不是这个:
<%= f.text_area :content, rows: 40, id: 'eg-textarea' %>
textarea
中的 \n
出现问题,无法正确呈现。您可以使用 div
而不是 textarea 或使用 Github 中的 master version 来解决问题。
我正在 RoR 中创建一个简单的博客。 当我编辑 post 时,我丢失了代码片段中的所有换行符。 我如何确保在重新加载 post 的内容时,编辑器正确地格式化了代码片段?
这是文本编辑器的输入:
A
B
这是使用自定义按钮生成的 froala 编辑器中的源代码:
<pre><code>A
B</code></pre>
这是插入数据库的数据:
"<pre><code>A\r\nB</code></pre>"
这是它在网页上的样子:
这是我尝试更新 post:
时在 Froala 编辑器中的样子这次源代码是这样的:
<pre><code>AB</code></pre>
这是自定义按钮的代码:
customButtons: {
insertCode: {
title: 'Insert code',
icon: {
type: 'font',
value: 'fa fa-code'
},
callback: function() {
if (!this.selectionInEditor()) {
this.$element.focus(); // Focus on editor if it's not.
}
var html = '<pre><code>' + (this.text() || '​') + '<span class="f-marker" data-type="false" data-id="0" data-fr-verified="true"></span><span class="f-marker" data-type="true" data-id="0" data-fr-verified="true"></span></code></pre>';
this.insertHTML(html);
this.restoreSelectionByMarkers();
this.saveUndoStep();
}
}
}
------------------------更新-------------------- ----------
问题似乎出在 froala 启动函数上:
第一步: 使用以下内容创建文本区域:
<textarea id="froalaedit" name="content">
<pre><code>A
B</code></pre>
</textarea>
第 2 步: 添加一个按钮来启动 froala 编辑器:
<button onclick="myFunction()">Click me</button>
<script>
function myFunction(){
$('textarea#froalaedit').editable({
inlineMode: false,
buttons: ['html', 'removeFormat', 'sep', 'undo', 'redo', 'sep', 'insertHorizontalRule', 'bold', 'italic', 'underline', 'strikeThrough', 'subscript', 'superscript', 'sep', 'fontFamily', 'fontSize', 'color', 'sep', 'formatBlock', 'blockStyle', 'align', 'sep', 'insertOrderedList', 'insertUnorderedList', 'sep', 'createLink', 'insertImage', 'insertVideo', 'table', 'uploadFile', 'fullscreen', 'insertCode'],
minHeight: 200,
customButtons: {
insertCode: {
title: 'Insert code',
icon: {
type: 'font',
value: 'fa fa-code'
},
callback: function() {
if (!this.selectionInEditor()) {
this.$element.focus(); // Focus on editor if it's not.
}
var html = '<pre><code>' + (this.text() || '​') + '<span class="f-marker" data-type="false" data-id="0" data-fr-verified="true"></span><span class="f-marker" data-type="true" data-id="0" data-fr-verified="true"></span></code></pre>';
this.insertHTML(html);
this.restoreSelectionByMarkers();
this.saveUndoStep();
}
}
}
})
};
</script>
第 3 步:按下按钮时复制行为。
--------------------固定------------------------
做了这个:
<div id="eg-textarea"><%= @post.content.html_safe %></div>
而不是这个:
<%= f.text_area :content, rows: 40, id: 'eg-textarea' %>
textarea
中的 \n
出现问题,无法正确呈现。您可以使用 div
而不是 textarea 或使用 Github 中的 master version 来解决问题。