我是一个有用的助手,可以为您翻译文本。
我尝试在我的网站上添加书签按钮,并通过生成控制器中的链接来实现。
模板部分:
链接以 "unsafe" 开头,我不知道如何告诉 Angular 信任这个链接。这个答案 - Angular changes urls to "unsafe:" in extension page 建议将协议添加到白名单中。我不想禁用 $sce 或将 "javascript" 添加到白名单协议中,因为我认为这是不安全的。我能否通过使用 $sce 来告诉 AngularJS 避免添加前缀 "unsafe"?不幸的是,对于我来说文档并不清晰,并且 $sce.trustAsJs(code)没有帮助我。注意:Angular 版本为 1.4.1。
我尝试在我的网站上添加书签按钮,并通过生成控制器中的链接来实现。
模板部分:
<a id="bookmarklet"
class="bookmarklet"
onclick="alert('Drag and drop me to the bookmarks bar');return false;"
href="{{getCode()}}">
+ Add
</a>
控制器部分:
$scope.getCode = function () {
var code = 'javascript:(function(){s=document.createElement(\'SCRIPT\');s.type=\'text/javascript\';' +
's.src=\'http://localhost:9000/scripts/bookmarklet/bookmarklet.js?x=' + ($scope.user.id) + '\';' +
'document.getElementsByTagName(\'head\')[0].appendChild(s);document.sc_srvurl=\'http://localhost:8080\'})();' ;
return code;
};
但我在编译后得到以下结果:
<a class="bookmarklet" href="unsafe:javascript:(function(){s=document.createElement('SCRIPT');s.type='text/javascript';s.src='http://localhost:9000/scripts/bookmarklet/bookmarklet.js?x=5517325d40c37bc2bfe20db6';document.getElementsByTagName('head')[0].appendChild(s);document.sc_srvurl='http://localhost:8080'})();">
+ Add
</a>
链接以 "unsafe" 开头,我不知道如何告诉 Angular 信任这个链接。这个答案 - Angular changes urls to "unsafe:" in extension page 建议将协议添加到白名单中。我不想禁用 $sce 或将 "javascript" 添加到白名单协议中,因为我认为这是不安全的。我能否通过使用 $sce 来告诉 AngularJS 避免添加前缀 "unsafe"?不幸的是,对于我来说文档并不清晰,并且 $sce.trustAsJs(code)没有帮助我。注意:Angular 版本为 1.4.1。
href
属性的值(通过直接操作指令的DOM元素来完成)。对于您的用例,这种方法可行吗? - plamuthref
属性设置为任何您想要的内容,而无需将任何内容添加到$compileProvider
的白名单中。 - plamut