我有一个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>
代码除外。
答案 0 :(得分:1)
您可以使用此简单代码
var html = '<img class="emo" src="images/emo/smile.png">';
var text = html.replace(/<.*?>/g, "");
replace
方法删除字符串中的所有html标记。
您可以测试底部演示中的每个html字符串。
$("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;
答案 1 :(得分:0)
你可以使用jQuery做这样的事情:
function remove_tags(html)
{
var html = html.replace("<img>","||img||");
var text = jQuery(html).text();
return text.replace("||img||","<img>");
}