允许在 DomPurify 中发表 HTML 条评论
Allow HTML comments in DomPurify
我想使用 DOMPurify 清理一些 HTML 内容,但我想保留 HTML 评论。这可能吗?
您可以在 this example 中看到它的作用 - 如果您输入带有评论的标记,评论将被删除。
DOMPurify 似乎非常可配置,但是 docs 没有提到使用什么术语来指定 HTML 评论作为允许的标签。
DOMPurify
没有任何挂钩或配置允许在 html 字符串中进行注释。您可以这样做,只需将 <!--
和 -->
替换为任何自定义属性并提供配置以允许 ADD_TAGS: ['comment']
它。
var dirty = "<!-- I am ready now, click one of the buttons! -->ac <script>in script<\/script> <b>hello</b>";
dirty = dirty.replace(/(<!--)/g,'<comment>').replace(/(-->)/g,'</comment>');
var config = { ALLOWED_TAGS: ['b'],ADD_TAGS: ['comment']};
var clean = DOMPurify.sanitize(dirty, config);
clean = clean.replace(/(<comment>)/g,'<!--').replace(/(<\/comment>)/g,'-->');
console.log("clean => ",clean);
jsFiddle 演示 - http://jsfiddle.net/4j6c28ve/
我有同样的问题,有一个更好的解决方案,那就不是 messing around with regex in markup(剧透警告:不要!):
var dirty = "<!-- I am ready now, click one of the buttons! -->ac <script>in script<\/script> <b>hello</b>";
var config = { ADD_TAGS: ['#comment'], FORCE_BODY: true };
var clean = DOMPurify.sanitize(dirty, config);
console.log("clean => ",clean);
// >>> clean => <!-- I am ready now, click one of the buttons! -->ac <b>hello</b>
我想使用 DOMPurify 清理一些 HTML 内容,但我想保留 HTML 评论。这可能吗?
您可以在 this example 中看到它的作用 - 如果您输入带有评论的标记,评论将被删除。
DOMPurify 似乎非常可配置,但是 docs 没有提到使用什么术语来指定 HTML 评论作为允许的标签。
DOMPurify
没有任何挂钩或配置允许在 html 字符串中进行注释。您可以这样做,只需将 <!--
和 -->
替换为任何自定义属性并提供配置以允许 ADD_TAGS: ['comment']
它。
var dirty = "<!-- I am ready now, click one of the buttons! -->ac <script>in script<\/script> <b>hello</b>";
dirty = dirty.replace(/(<!--)/g,'<comment>').replace(/(-->)/g,'</comment>');
var config = { ALLOWED_TAGS: ['b'],ADD_TAGS: ['comment']};
var clean = DOMPurify.sanitize(dirty, config);
clean = clean.replace(/(<comment>)/g,'<!--').replace(/(<\/comment>)/g,'-->');
console.log("clean => ",clean);
jsFiddle 演示 - http://jsfiddle.net/4j6c28ve/
我有同样的问题,有一个更好的解决方案,那就不是 messing around with regex in markup(剧透警告:不要!):
var dirty = "<!-- I am ready now, click one of the buttons! -->ac <script>in script<\/script> <b>hello</b>";
var config = { ADD_TAGS: ['#comment'], FORCE_BODY: true };
var clean = DOMPurify.sanitize(dirty, config);
console.log("clean => ",clean);
// >>> clean => <!-- I am ready now, click one of the buttons! -->ac <b>hello</b>