繁体   English   中英

javascript替换允许的html标签

[英]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标签。 或者,当它取出headhtmlscript等标签时,你可能会遇到问题。

此外,如果你想要:不是一个列表,你可以:

var mylist = ["b" ,"strong", ... etc. etc.];
jQuery(":not(" + mylist.join(", ") + ")").removeTags();

甚至把它放在removeTags函数中。 (可能性是无止境 ... )

编辑:正如一些人在评论中指出:Javascript可以关闭。 另一件事是我认为你想要保留所有内部信息。 如果没有那么只需一个remove()就足够了,就像megakorre所说的那样。

正如评论中指出的那样,这不能安全地完成。 绕过javascript过滤器很容易。 这必须在服务器端实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM