Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

309
Vistas
onLoad ocurre varias veces con Iframe

Al tener algunos problemas con Angular 2, estoy creando un componente que tiene un iframe y establece la fuente desde la entrada. Sin embargo, cuando se carga, presiona onLoad dos veces, una con src='' y otra con la URL de entrada real.

Parece que no puedo entender cómo conectar la URL para el iframe cuando se coloca en la vista.

 export class ExternalComponent implements OnInit { @Input() url: string; private src: any; constructor(private sanitizer: DomSanitizer) { } ngOnInit() { this.src = this.sanitizer.bypassSecurityTrustResourceUrl(this.url) } onLoad() { } }

HTML:

 <iframe [src]="src" frameBorder="0" (load)="onLoad()"></iframe>

Reproducción: http://plnkr.co/edit/Dnpmv6X2IO3WGQAg0372?p=preview

Gracias

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede probar un enlace de atributo, que no se agrega en absoluto si el valor es null

 <iframe [attr.src]="src ? src = null" frameBorder="0" (load)="onLoad()"></iframe>

actualizar

Como se explica en https://stackoverflow.com/a/15880489/217408 cuando el controlador de eventos se agrega al elemento antes de agregar el <iframe> al DOM. Esto parece ser lo que está haciendo Angular.

Agregar controlador de eventos imperativamente después de agregar el elemento al DOM

Ejemplo de Plunker

Ignorar eventos mientras la url es nula

Ejemplo de Plunker

about 4 years ago · Santiago Trujillo Denunciar

0

ngOnInit() { this.src = this.sanitizer.bypassSecurityTrustResourceUrl(this.url) } This is wrong code if use like this iframe will load more time . ts file ngOnInit() { this.src = this.url; } make html page like this (use pipe) <iframe [src]="src| safe" ></iframe> pipe file import { DomSanitizer} from '@angular/platform-browser'; constructor(private sanitizer:DomSanitizer){ return this.sanitizer.bypassSecurityTrustResourceUrl(value);
about 4 years ago · Santiago Trujillo Denunciar

0

Usando el depurador descubrí que event.target.src podría proporcionar la solución. La primera vez que se ejecuta, es una cadena vacía "" . La segunda vez que el valor es la URL de la imagen. Entonces, en mi caso funciona así:

 onLoad(event: any) { if (event.target.src) { //do some stuff here } }
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda