只允许contenteditable div中的某些标签

时间:2018-11-18 01:36:44

标签: javascript jquery angular

我有一个内容可编辑的div,使用ctrl+i之类的键盘快捷键,用户可以设置文本格式。当他们键入innerHTML时,会反映出标记,即

Hello&nbsp;<i>thanks for&nbsp;<br><br>for showing up<b>&nbsp;y'all b</b></i>

这很好,很适合我的目的。但问题是,当我用其他div打印html时,如果用户添加了任何其他html标记,则它们确实可能使应用程序混乱。

例如,如果他们添加了<script>标记或style等。如何使用户被允许添加<i><br><b><s>&nbsp;却无法添加其他内容?

有什么想法吗?谢谢

1 个答案:

答案 0 :(得分:1)

我认为您可以使用regExpresion来避免使用“ indeseables”标签。像

<textarea #data [(ngModel)]="value" (input)="replace(data)"></textarea>
<div [innerHtml]="valueParse">
</div>

replace(control:any)
{
   this.valueParse=control.value.replace(/<(?!br|i|u)((\w+))>/gm,"&lt$1&gt")
   .replace(/<\/(?!br|i|u)((\w+))>/gm,'&lt\/$1&gt');
}

请参见stackblitz