我有一个用户可以编写文档的应用程序。内容以html格式交付,并且其中可能包含“未保存的内容”。例如,带有youtube视频的iframe。
我这样输出
<div [innerHtml]="getDocumentContentTrusted()"></div>
Run Code Online (Sandbox Code Playgroud)
成分法
getMainContentTrusted(){
return this.domSanitizer.bypassSecurityTrustHtml(this.documentContent);
}
Run Code Online (Sandbox Code Playgroud)
这样的作品。一切都可以正确显示,但是例如youtube-iframe就是documentContent的一部分,那么我就有副作用。在应用程序中任何位置的任何单击上,documentContent似乎都将重新加载。
关于如何避免这种情况的任何提示?
对于iframe,我们使用bypassSecurityTrustResourceUrl,而不使用bypassSecurityTrustHtml。在这种情况下,我认为你们都需要。
尝试在您的情况下使用这两个过滤器
1)安全网址绕过过滤器“ safeUrl”
import { Component, Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({ name: 'safeUrl' })
export class SafeUrlPipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
transform(url) {
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
Run Code Online (Sandbox Code Playgroud)
2)安全的HTML绕过过滤器'safeHtml'
import { Component, Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({
name: 'safeHtml'
})
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitized: DomSanitizer) {}
transform(value) {
return this.sanitized.bypassSecurityTrustHtml(value);
}
}
Run Code Online (Sandbox Code Playgroud)
希望它能工作
<div [innerHtml]="documentContent | safeHtml | safeUrl"></div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |