我正在尝试将Angular与应用列表一起使用,每个应用都是一个链接,可以更详细地查看应用(apps/app.id):
<a id="{{app.id}}" href="apps/{{app.id}}" >{{app.name}}</a>
Run Code Online (Sandbox Code Playgroud)
每次我点击其中一个链接时,Chrome都会将网址显示为
unsafe:chrome-extension://kpbipnfncdpgejhmdneaagc.../apps/app.id
Run Code Online (Sandbox Code Playgroud)
它unsafe:来自哪里?
我对这篇文章有类似的问题.
但添加"javascript"答案中提出的内容并没有解决我的问题:
$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|javascript):/);
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像:
<a ng-href="{{var1 ? '/home' : 'javascript: void(0);'}}" ng-bind="var2"></a>
Run Code Online (Sandbox Code Playgroud)
但是在网址中,它产生了一个 unsafe:javascript: void(0);
我有一个小的AngularJS应用程序,我试图打开上传的图像,并遇到角度在URL的开头添加"unsafe:"的问题.我在我的应用配置中添加了以下行来清理URL,但它对我不起作用:
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob:chrome-extension):|data:image|\//);
Run Code Online (Sandbox Code Playgroud)
我正在使用Angular v1.3.0,所以我使用正确的属性名称.我主要使用Chrome,但我在其他浏览器中遇到同样的问题.此外,我的图像的开头看起来像这样:
unsafe:data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUg...
Run Code Online (Sandbox Code Playgroud)
知道我的正则表达式中缺少什么吗?提前致谢!
我可以毫不费力地注入$ scope和$ location以及$ routeProvider之类的东西,为什么$ compileProvider不同?
根据这个答案,我明白我必须指示angular不要为某些链接添加前缀(在我的情况下是短信),但我不能在我的项目中应用答案.它说我应该添加这个:
angular.module('myModule', [], function ($compileProvider) {
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
});
Run Code Online (Sandbox Code Playgroud)
但Chrome控制台说:
"angular.js:68 Uncaught Error:[$ injector:unpr]未知提供者:$ compileProviderProvider < - $ compileProvider"
那个"提供者 - 提供者"的东西让我觉得服务的真实名称只是$ compile(而且这个角度正在"提供者"后缀上:
angular.module('myModule', [], function ($compile) {
$compile.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file):/);
});
Run Code Online (Sandbox Code Playgroud)
但是,可以预见,我猜,我得到:
angular.js:13550 TypeError:$ compile.aHrefSanitizationWhitelist不是函数