使用javascript删除除<img/>或<img/>标记之外的所有html标记

时间:2016-05-13 19:58:55

标签: javascript jquery html tags

我有一个JS字符串,我想在我的网站消息输入上阻止html和js注入。

如何从字符串中删除除img标记之外的所有HTML标记,因为它用于显示这样的表情符号:

<img class="emo" src="images/emo/smile.png">

我使用以下代码删除所有html标记,但它仅适用于<br>标记,而不适用于img标记。

function remove_tags(html)
 {
   var html = html.replace("<img>","||img||");  
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   html = tmp.textContent||tmp.innerText;
   return html.replace("||img||","<img>");  
 }

删除这些html标签或只是将它们显示为简单文本,例如: <script> alert("hi");</script>

<img>代码除外。

2 个答案:

答案 0 :(得分:1)

您可以使用此简单代码

var html = '<img class="emo" src="images/emo/smile.png">';
var text = html.replace(/<.*?>/g, "");

replace方法删除字符串中的所有html标记。

您可以测试底部演示中的每个html字符串。

&#13;
&#13;
$("button").click(function(){
    var html = $("textarea").val();
    var text = html.replace(/<.*?>/g, "");
    $("textarea").val(text);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea><img src=x onerror=alert("Test") /><p>aa</p></textarea>
<br />
<button>Remove HTML tags</button>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你可以使用jQuery做这样的事情:

function remove_tags(html)
 {
   var html = html.replace("<img>","||img||");  
   var text = jQuery(html).text();
   return text.replace("||img||","<img>");  
 }

参考:Strip HTML from Text JavaScript