<div ng-class="{ 'chat-dialog-news-mine':{{item.isOwn}},'chat-dialog-news-other':{{!item.isOwn}},'chat-dialog-news-file':{{item.content_type == 6}},'chat-dialog-news-mine-file':{{item.isOwn}}&&{{item.content_type == 6}},'chat-dialog-news-other-file':{{!item.isOwn}}&&{{item.content_type == 6}}}" msgId="{{item.imdn_id}}">
<div contextmenu="supermenu" ng-right-click="decrementRight($event,item)">
<i class="icon warn-icon" ng-if="item.isWarn" ng-click="reSendFile(item)"></i>
<i ng-class="{true: 'icon {{item.status}}', false: ''}[{{item.isOwn && item.status !== ''}}]"></i>
<i ng-class="{true: 'bubble-icon right-icon', false: 'bubble-icon left-icon'}[{{item.isOwn}}]"></i>
<span compile='item.content|trustHtml' ng-click="newsClick($event, item)" ng-dblclick="newsDBClick($event, item)" ></span>
</div>
下面这段代码是html转义了,但是也把< ,>,&这些输入转为了<,>,&,如何让页面显示不被转义的页面,请教?现在所在的项目
是客户端,就像某企鹅聊天软件,内容可以插入图面和发送文件,还有 截图功能,主要是文本消息输入,特殊字符被转义了,还有就是文本内容还有
图面,文件都是拼接的div字符串,然后存入indexdb数据库,然后在controller获取数据,然后ng-repeat 数据;渲染到信息窗口,文本内容也被转义了,
不转义,图片还有文件,渲染到信息窗口就是一段html代码
<span compile='item.content|trustHtml' ng-click="newsClick($event, item)" ng-dblclick="newsDBClick($event, item)" ></span>
存到indexdb前自己先编码一下了
如何编码,需要帮助
@Lonely,lonelyBurning:
使用HttpUtility.HtmlEncode编码,编码后,原来是&的部分变成了&amp;
在界面上显示就是&了
@诶碧司:试了试还是不可以
@Lonely,lonelyBurning:
怎样不行?
var str = System.Web.HttpUtility.HtmlEncode("&");
得到str的值为"&amp;"
下面用html测试,界面上看到的也是&
<html> <head> </head> <body> <p>&amp;</p> <p>&</p> </body> </html>
@诶碧司: 我试了试还是不行的,
//发送二人文本 data.to = to_pgm_userid; data.fromId = to_pgm_userid; data.need_read_report = need_read_report; data.content = data.content.replace(/ /g, ' ').replace(/&/g, '&'); data.content = System.Web.HttpUtility.HtmlEncode("data.content");
@Lonely,lonelyBurning:
不要说不行,而要描述想要的结果是怎样的,得到的实际结果又是怎样的,和想要的结果有什么不一样的地方
另外System.Web.HttpUtility.HtmlEncode("data.content");里的"data.content"是什么意思?一个字符串还是想要输入变量来使用?
@诶碧司: 我使用的是angularjs框架,现在就是有个需求就是二人聊天和群聊天可以发送特殊字符,比如说我我在输入框内输入,< > & < & ,在上面的显示就是,& 被转义了&,显示在页面上了,&lt转义为 > ,我想要的结果就是当我输入任何内容,渲染的页面也是输入的内容,data.content 为输入的内容;
@Lonely,lonelyBurning:
调试一下,看看执行下面代码前后data.content的值
System.Web.HttpUtility.HtmlEncode(data.content)
你得说明是什么语言啊?
angularjs javascript
HTML中使用trustHTML过滤器:
<div ng-bind-html='d.4|trustHtml'></div>
而trustHTML过滤器的定义如下:
queueApp.filter("trustHtml",function($sce){
return function (input){
return $sce.trustAsHtml(input);
}
});
我试一下可不可以
还是不可以的
我现在代码就是这样写的,所以特殊字符也被转义了
& 用 &lt
我输入的是& 输出的也必须是&;输入的是&输出也是&