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:
3 Réponses :
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'))()" />
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.
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
.
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
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.
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.