簡體   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