我正在使用 webview 组件开发 winrt 8.1 应用程序。 我在 WebView 内容上使用 Angular 。 我在将图像(html 控件)源设置为 Angular 绑定(bind)时遇到问题...源由 Angular Controller 注入(inject),我在 inage src 中得到此前缀: 字首: “不安全:ms-local-stream://01010101-0101-0101-0101-0101010101212_64656d6f32” 完整路径: 不安全:ms-local-stream://01010101-0101-0101-0101-0101010101212_64656d6f32/test.png。 如果我使用 DOM Explorer 手动更改“test.png”的路径(删除“不安全”前缀),则会出现图像。但是当它被注入(inject)时,我得到这个前缀,它不显示图像,因为在 LocalFolder 上找不到路径。 如何禁用此行为?
图像源是通过Angular注入(inject)的。 如果源是静态的: 它可以工作,但是当同一个 src 替换为injection时,它得到这个前缀... 通常 webview 对于动态内容非常有限,当我在 WinJS 上使用 Angular 时,我遇到了动态 html 注入(inject)的问题。
最佳答案
因为$compileProvider
负责编译html,所以你需要告诉$compileProvider
你应该允许ms-local-stream://
同时添加 src
标记,可以在 $compileProvider.imgSrcSanitizationWhitelist
方法中完成。如果您未指定清理白名单,则 Angular 将在值中添加 unsafe:
前缀。您可以在应用程序的配置中添加此设置。
标记
<img ng-src="{{url}}" alt="Title"/>
代码
app.config(['$routeProvider', '$compileProvider',
function($routeProvider, $compileProvider) {
//this is for anchor href
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ms-local-stream):/);
//this is for img src
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ms-local-stream):/);
}]);
引用相同SO question .
关于javascript - 动态内容注入(inject)的 Webview 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29726306/