1
votes

Comment gérer cette iframe chargée lorsque l'URL renvoie 204

J'ai vu la réponse donnée ici:

Comment détecter correctement l'iframe a été chargé avec la réponse 204 No Content?

mais cela n'a pas aidé.

Il est possible, pour vérifier (à l'aide d'événements, sans vérifier le contenu d'une iframe), que l'iframe a été chargé (la demande a été envoyée)?

Exemple:

stackblitz


5 commentaires

avez-vous accès au code de la webapp dans l'iframe?


Je dois faire l'hypothèse que je n'aurai pas accès au code de la page sous l'URL donnée


Ce n'est pas vraiment une question angulaire. Javascript en général ne peut pas vraiment gérer une détection d'erreur correcte sur les iframes.


@EliezerBerlin Alors, savez-vous comment gérer cette situation?


@AleksanderBurzec Désolé. J'ai demandé à Google, mais il n'a pas été utile. Mais si vous trouvez une solution JS, je serais heureux de vous aider à la traduire en Angular, pas de problème.


3 Réponses :


0
votes

Vous pouvez utiliser l'événement iframe onLoad et détecter si l'iframe a été chargé.

Exemple:

 <iframe src="https://fr.wikipedia.org/wiki/Main_Page" onLoad="(() => console.log('Loaded'))()" />


2 commentaires

onLoad n'est pas déclenché lorsque la page renvoie 204 (pas de contenu) - voir l'exemple stackblitz


Vous pouvez utiliser la requête ajax pour vérifier si l'url iframe a un code d'état 204 ou non.



2
votes

Vous pouvez détecter l'événement de chargement d'une iframe , mais pas le statut 204 sauf si vous utilisez une fetch ou une xmlhttprequest . Cela ne peut toujours pas être parfait car le httpheader ce site httpheader peut permettre qu'il soit intégré dans des iframes mais pas fetched .


0 commentaires

0
votes

c'est ce que j'ai réussi à faire. J'ai attrapé l'élément iframe avec ElementRef.

html:

  ngAfterViewInit(): void {
    const src = this.iframe.nativeElement.getAttribute("src");
    if (src.endsWith("204")) {
      console.log("iframe loading failed");
    } else {
      console.log("iframe load succesfuly");
    }
  }

ts:

@ViewChild("iframe") iframe: ElementRef;

end AfterViewInit Je vérifie si la chaîne src se termine par «204».

<iframe #iframe name="blah" id="blah" src="https://httpstat.us/204"></iframe>

voir ici: stack blitz


5 commentaires

Ceci est un exemple d'url, qui renvoie 204. Dans un scénario réel, cela peut être " httpstat.us/blah " ou " httpstat.us/otherOne " et c'est une solution vraiment amusante


Vous pouvez le modifier pour vérifier s'il ne correspond pas au src attendu lors d'un chargement réussi. Tu ne peux pas?


Ce n'est pas la racine d'un problème. Vérifier le modèle d'URL n'est pas une solution


Quel type de solution attendez-vous?


Je veux savoir, que l'iframe a été chargé, lorsque la page donnée renvoie le statut http "Aucun contenu". Les gestionnaires d'événements standard ne sont pas déclenchés.