[英]javascript replace allowed html tags
我需要使用javascript删除所有html标签,除了我明确允许的那些。 我有一个表单,只允许以下标签及其各自的结束标签:
<b> <strong> <i> <em> <u> <br> <pre>
<blockquote> <ol> <ul> <li>
<a href="http://www.somesite.com">link</a>
应删除所有其他标记。 我一直在搜索,但我只找到了删除所有标签或删除单个标签的实例。 这可以简单地完成吗? 我不能使用PHP,必须是javascript。 有解决方案吗
谢谢!
因此,啜饮所有形式的安全女巫,这就是为什么你这样做的原因
你可以将内容放入div并调用
$('#container :not(b, strong, em, u, br, pre, blockquote, ol, ul, li, a)').remove();
var res = $("#container").html();
jQuery.fn.removeTags = function()
{
this.each(function()
{
if(jQuery(this).children().length == 0)
{
jQuery(this).replaceWith(jQuery(this).text());
}
else
{
jQuery(this).children().unwrap();
}
});
return this;
};
jQuery("#container").find(":not(b, strong, i, em, u, br, pre, blockquote, ul, ol, li, a)").removeTags();
确保容器不高于body
标签。 或者,当它取出head
, html
, script
等标签时,你可能会遇到问题。
此外,如果你想要:不是一个列表,你可以:
var mylist = ["b" ,"strong", ... etc. etc.];
jQuery(":not(" + mylist.join(", ") + ")").removeTags();
甚至把它放在removeTags函数中。 (可能性是无止境 ... )
编辑:正如一些人在评论中指出:Javascript可以关闭。 另一件事是我认为你想要保留所有内部信息。 如果没有那么只需一个remove()就足够了,就像megakorre所说的那样。
正如评论中指出的那样,这不能安全地完成。 绕过javascript过滤器很容易。 这必须在服务器端实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.