我正在尝试找到一种简单快捷的方法来解码和编码文本.
我发现的最好的是下面这个.
它是否有任何区别使用$("<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
Run Code Online (Sandbox Code Playgroud)
它的工作原理是因为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;
}
Run Code Online (Sandbox Code Playgroud)
甚至一气呵成:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
600 次 |
| 最近记录: |