Voulez appeler une fonction si l'iframe n'a pas de charge ou charge?
J'ai un iframe
dans ma page. Si le iframe
ne se charge pas, voulez alert
le message "pdf pas trouvé" et si la iframe
ne charge, il doit alert
"pdf ouvert".
Personne ne sait comment y parvenir?
Êtes-vous du chargement d'un fichier PDF dans l'iframe?
oui . je veux comme cela si le pdf ne peuvent pas être chargés à partir du serveur, une boîte de message "d'alerte" devrait venir
Télécharger le PDF sur le même domaine que la page web?
oui ses sur le même domaine
Comment voulez-vous faire des appels Ajax? La bibliothèque utilisez-vous?
oui . je veux comme cela si le pdf ne peuvent pas être chargés à partir du serveur, une boîte de message "d'alerte" devrait venir
Télécharger le PDF sur le même domaine que la page web?
oui ses sur le même domaine
Comment voulez-vous faire des appels Ajax? La bibliothèque utilisez-vous?
OriginalL'auteur Kunal Vashist | 2012-03-02
Vous devez vous connecter pour publier un commentaire.
Donc, l'idée est d'utiliser un Ajax-demande de "test" de l'URL. Ajax-demande de vous permettre de lier la "réussite" et "erreur" gestionnaires - contrairement à
<iframe>
éléments qui ne donnent qu'une "charge" de gestionnaire.Bien sûr, Ajax-les demandes sont limitées par la Même la Politique de l'Origine (à moins que le serveur web permet de la SCRO), mais vous avez déclaré que le PDF est sur le même domaine, donc il ne devrait pas y avoir de problèmes.
Aussi, vous avez déclaré que vous utilisez la bibliothèque Mootools - je utiliser jQuery, donc je peux seulement vous fournir avec un jQuery solution, mais depuis, nous faisons un simple Ajax demande avec "succès" et "erreur" gestionnaires, vous devriez être en mesure de recréer un Mootools solution basée sur mon jQuery solution facilement.
Donc, étant donné un iframe et une URL:
L'Ajax demande:
Succès-démo: http://jsfiddle.net/CZWdL/1/show/
Erreur-démo: http://jsfiddle.net/CZWdL/2/show/
Donc, si l'Ajax requête déclenche un évènement "erreur", nous avons simplement alerter le "Pas trouvé" apparaît immédiatement. Si, toutefois, l'Ajax demande déclenche un "succès" de l'événement, nous attribuons une "charge" gestionnaire de notre élément IFRAME (cette "charge" gestionnaire finalement alerte "Chargé" du message), et de définir l'URL de son
src
propriété manuellement.Je veux dire qu'il ne fonctionnera pas en général. Mais pour l'OP, c'est à dire à la charge de pdf dans un iframe, il devrait fonctionner.
Attendre, les deux JQuery et de l'iFrame extraction de l'URL? N'est-ce pas un peu lourd?
Oui. Maintenant que vous avez mentionné, la première demande n'a pas besoin d'être une requête GET. Une requête HEAD le travail sera fait trop. Donc, on peut faire une TÊTE pour voir si l'URL existe de la sorte: stackoverflow.com/questions/333634/... ou alors stackoverflow.com/a/4715334/425275
OriginalL'auteur Šime Vidas
Vous pouvez simplement ajouter ce code dans votre iframe quand il est chargé :
Et dans votre page d'accueil :
Si votre fonction de rappel n'est pas appelé au bout de 30 secondes, vous pouvez dire que le pdf n'est pas chargé.
Edit :
Votre premier fichier (avec l'iframe) :
La deuxième (fichier php) :
N'oubliez pas d'obtenir le $_GET['f']
Je ne pense pas que cette solution fonctionne pour ce scénario en particulier, que la page à l'intérieur de l'iframe n'est pas le HTML, c'est un document PDF.
OriginalL'auteur akiavara