使用jquery在8中转义html的简单方法

时间:2013-02-13 02:44:20

标签: javascript jquery internet-explorer-8 innerhtml

我想将"x < y"等文字转换为正确转义的"x &lt; y"。我一直在使用浏览器的内置转义功能来执行此操作:

 div = $('<div></div>');
 div.text(my_text);
 escaped_text = div.html();

这很有效....直到我在IE 8中测试,当你调用.html()时,它会吃掉换行符。是否有类似的简洁,强大的方法,这也将在IE 8中工作?

3 个答案:

答案 0 :(得分:1)

Underscore有escape / unescape方法。这是一个非常有用的库。

答案 1 :(得分:0)

您可以像这样交换innerHTML属性的html()方法:

div = $('<div></div>');
div.text(my_text);
escaped_text = div[0].innerHTML;

答案 2 :(得分:0)

你可以试试这个:

jQuery代码:

(function ($) {
    $.fn.escapeHtml = function () {
        var e = document.createElement("DIV"),
            s = '';
        e.innerHTML = $(this).val();
        s = e.textContent || e.innerText || "";
        e.remove();
        return s.replace(/<\/?([a-z][a-z0-9]*)\b[^>]*>?/gi, '');
    }
})(jQuery);

使用方法:

// if you want to real input value then, go with jQuery '.val()' option
var htmlString = $('#yourelement').val();

// remove html character, go with jQuery '.escapeHtml()' option
var safeHtmlString = $('#yourelement').escapeHtml();

或者您可以使用jQuery插件:

jQuery.escapeHtml()