【发布时间】:2018-08-28 19:04:49
【问题描述】:
在所见即所得的文本编辑器源代码视图中,我有这个简单的 html:
<span style="font-family: Moul;" {%if loop.first=='first'%} first="" {%endif%}>Hello Text</span>
但是,当我从源视图切换到可视视图时,所见即所得将我的 html 代码更改为:
<span style="font-family: Moul;" {%if="" loop.first="='first'%}" {%endif%}="">Hello Text</span>
但是,我想保持我的 html 不变,而无需通过文本编辑器进行更改。
$('#summernote').summernote({
height: 300
});
body {
padding: 40px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css">
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/summernote/0.5.0/summernote-bs3.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/css/font-awesome.min.css">
<textarea name="summernote" id="summernote" cols="30" rows="10">
</textarea>
编辑:
实际上,所见即所得将单个html属性转换为附加“=”和双引号" "符号。我测试在所见即所得的源视图中写入<input type="checkbox" checked>,它将被转换为这样的属性检查:由于所见即所得将检查的单个属性视为无效属性,因此它附加等号“=”和双引号“”输出@ 987654328@。您可以在上面的代码 sn -p 中对其进行测试。这是,因此,我上面的jinja2 语法附加了= 和" ",这会在运行时导致语法错误异常。
我尝试使用正则表达式来帮助防止所见即所得改变我的 html 如下:
codeview = $('summernote').summernote('code');
console.log(codeview);
Regx = /(\<.*\s*\{\%[^}]*\%\}.*\s*\>)/g;
codeview.replace(Regx,'$1');
但在代码视图和可视视图之间切换视图时,它仍然会更改我的 html。
我怎样才能使我的 html 在所见即所得的 Summernote 编辑器中保持不变?谢谢。
【问题讨论】:
-
这是什么语法?
{%if loop.first=='first'%}。 EJS? -
@ArtemSolovev,它是
jinja2代码。我曾经检查条件以将属性设置为 html 元素。事实上,所见即所得将单个 html 属性转换为附加“=”符号。我在所见即所得的源视图中测试了写入<input type="checkbox" checked>,它将属性checked转换为如下所示:<input type="checkbox" checked="">因为所见即所得将单个属性checked视为无效属性,因此它附加等号“=”和双精度引用 "" 给它。因此,我上面的jinja2语法附加了 = 和“”,这会在运行时导致syntax error异常。 -
您希望它如何在可视化编辑器中显示?在这种情况下,您应该只禁用可视化编辑器,因为当只能部分渲染某些内容时,以可视化方式渲染它是没有意义的?
-
我想在运行时正确执行html代码和jinja2代码。因为我正在为我的客户做模板设计,所以虚拟视图可以帮助我减少样式和 html 的编码。然而,我很难防止所见即所得的编辑器破坏我的编码语法。
-
我不明白您如何处理可视化编辑器的这种行为。我建议你改用代码编辑器,每次使用可视化编辑器都会毁掉你的代码。
标签: javascript html jinja2 wysiwyg summernote