我正在尝试找到一种简单快捷的方法来解码和编码文本。
我发现的最好的是下面这个。
使用$("<div/>")
会有什么不同吗?为什么它就在这里,即使没有div?
您是否有更快捷的方式对HTML进行编码和解码?
代码:
var myHTMLstring = "<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf";
var myEncoded = $('<div/>').text(myHTMLstring).html();
//<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf
var myDecoded = $('<div/>').html(myEncoded).text();
//<p /> + <br /> sdfsdfdsfdsfsdfsdfsdfsfsfsfdsf
答案 0 :(得分:6)
它的工作原理是因为jQuery text
方法使用createTextNode()
,它将特殊字符替换为HTML实体等价物。您可以使用该方法 1 来创建替代方法,但是如果您仍然使用jQuery,那么您使用的方法很好而且很快。
1 这将是简单的javascript等价物:
function encode(htmlstr){
var x = document.createTextNode()
,y = document.createElement('div');;
x.textContent = htmlstr;
y.appendChild(x);
return y.innerHTML;
}
function decode(htmlstr){
var y = document.createElement('div');;
y.innerHTML = htmlstr;
return y.innerText || y.textContent;
}
甚至一气呵成:
function htmlcode(htmlstr,doDecode){
var x = document.createTextNode()
,y = document.createElement('div');;
x.textContent = htmlstr;
if (doDecode) { y.innerHTML = htmlstr; }
else { y.appendChild(x); }
return doDecode? (y.innerText || x.textContent) : y.innerHTML;
}