如何在所见即所得编辑器中保持 html 属性不变?

How to keep html attribute unchanged in wysiwyg editor?

在所见即所得的文本编辑器源视图中,我有这个简单的 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>

已编辑:

事实上,wysiwyg 将单个 html 属性转换为附加“=”和双引号 " " 符号。我在所见即所得的源代码视图中测试了写 <input type="checkbox" checked>,它将被转换为这样的属性检查:因为所见即所得将单个属性检查为无效属性,因此它附加等号“=”和双引号“”到它输出 <input type="checkbox" checked="">。您可以在上面的代码片段中对其进行测试。因此,我上面的 jinja2 语法附加了 =" ",这会在 运行 时间内导致语法错误异常。

我尝试使用正则表达式来帮助防止所见即所得改变我的 html 像这样:

codeview = $('summernote').summernote('code');
console.log(codeview);
Regx  =  /(\<.*\s*\{\%[^}]*\%\}.*\s*\>)/g;
codeview.replace(Regx,'');

但在代码视图和可视化视图之间切换视图时,它仍然改变了我的 html。

我怎样才能使所见即所得的 summernote 编辑器的 html 保持不变?谢谢。

我假设您有一些代码检查 first 属性?

如果那是 CSS 那么如果可能的话你可以改变它来检查空的 first 属性:

[first]:not([first='']){ }

如果那是 javascript 它是:

document.querySelectorAll("[first]:not([first=''])");

之所以想澄清以上内容,是因为如果是这种情况,您可以将您的条件移到 first 属性中,希望它不会受到影响:

<span style="font-family: Moul;" first="{%if loop.first=='first' %}true{%endif%}">Hello Text</span>