Angularjs Angular使用$sce允许一些html,而不允许所有html(仅允许我的html)
我有一个过滤器,可以添加一些html(将用户解析到href)。我在用户输入的文本上运行它(用户的“post”)。然后使用Angularjs Angular使用$sce允许一些html,而不允许所有html(仅允许我的html),angularjs,Angularjs,我有一个过滤器,可以添加一些html(将用户解析到href)。我在用户输入的文本上运行它(用户的“post”)。然后使用nghtmlbind={{post.text | parseUsers}} 这是过滤代码 .filter('parseUsers', function($sce){ return function(input, scope){ if (input !== null && input !== undefined){
nghtmlbind={{post.text | parseUsers}}
这是过滤代码
.filter('parseUsers', function($sce){
return function(input, scope){
if (input !== null && input !== undefined){
var result, personPattern, personLinkTpl, userLink,personName, personLink;
result = input;
personPattern = /@[a-zA-Z\allowd_]+/gi;
personLinkTpl = '<a href=\'#/users/%USER_ID%/\'>%USER%</a>';
personMentions = input.match(personPattern);
if (personMentions != null && personMentions.length > 0) {
for (var j = 0; j < personMentions.length; j++) {
personName = personMentions[j];
personLink = personName.replace('@', '').toLowerCase();
userLink = personLinkTpl.replace(/%USER_ID%/, personLink).replace(/%USER%/, personName);
result = result.replace(personName, userLink);
}
}
return $sce.trustAsHtml(result);
}
};
})
.filter('parseUsers',函数($sce){
返回函数(输入、范围){
if(输入!==null&&input!==未定义){
var结果、personPattern、personLinkTpl、userLink、personName、personLink;
结果=输入;
personPattern=/@[a-zA-Z\allowd_uz]+/gi;
personLinkTpl='';
personments=input.match(personPattern);
if(personments!=null&&personments.length>0){
对于(var j=0;j
一切正常,但这意味着我关闭了这个html上的ng sanitize服务。所以我可以发布警报('hey')
,它会起作用
如何将信任仅分配给添加的html或特定的正则表达式而不是所有内容?或者我应该在开始解析输入之前对其进行清理?如何使用$sce实现这一点
谢谢 你现在找到解决办法了吗?如果是,请邮寄