首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular sce.trustAsUrl和javascript href

Angular sce.trustAsUrl和javascript href
EN

Stack Overflow用户
提问于 2013-10-16 22:34:07
回答 1查看 1.4K关注 0票数 5

我正在尝试创建一个带有bookmarklet的页面,如下所示:

代码语言:javascript
运行
复制
<a ng-href="{{getBookmarklet()}}">Bookmarklet</a>

function MyCtrl($scope) {
  $scope.getBookmarklet = function() {
     return 'javascript:alert(1)';
  }
}

href被清理为unsafe:javascript:alert(1)。因此,我尝试使用sce.trustAs来防止这种情况:

代码语言:javascript
运行
复制
function MyCtrl($scope, $sce) {
  $scope.getBookmarklet = function() {
     return $sce.trustAsUrl('javascript:alert(1)');
  }
}

但是,我的URL上仍然有'unsafe‘前缀。我也尝试过trustAsJs,但没有成功。我不想在我的compileProvider应用程序中将javascript: URLs列在白名单中,只允许这个实例。

EN

回答 1

Stack Overflow用户

发布于 2016-06-07 07:29:41

我遇到了这个问题,并且能够通过使用$sce.trustAsHtml()来解决它。

JS:

代码语言:javascript
运行
复制
function MyCtrl($scope, $sce) {
  $scope.getBookmarklet = function() {
    return $sce.trustAsHtml('<a href="javascript:alert(1)">Bookmarklet</a>');
  }
}

HTML:

代码语言:javascript
运行
复制
<ng-bind-html ng-bind-html="::getBookmarklet()"></ng-bind-html>

这可能会引起CSS和其他指令的问题,但这些问题通常是可以解决的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19406248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档