javascript将html实体转回

有时候我们可能需要向html中传递html代码。但是因为我们的后台框架使用了laravel。所以我们在赋值的时候就会变成:

1
{{$username}}

虽然我们使用自带的非转义的赋值方法:

1
{!! $username !!}

但是我的需求却是不能使用后面的这类方法。

通过谷歌,我了解到一种完美的办法,可以将转义后的代码再次转回来。

代码如下:

1
2
3
4
5
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}

我们只需要调用该方法就可以完美执行反转义了:

1
2
htmlDecode("<img src='myimage.jpg'>"); 
// returns "<img src='myimage.jpg'>"

参考