J'ai un plugin jQuery que j'utilise pour créer dynamiquement et rendre un formulaire sur une page asp.net default.aspx, puis le soumettre. La page à laquelle elle est soumise est une page pdf.aspx. La page génère un fichier PDF puis utilise Response.Write pour écrire le fichier (application/pdf) dans le navigateur. J'utilise la même méthode pour afficher les fichiers XLSX dans le navigateur. Cela fonctionne vraiment bien, mais j'ai besoin d'un rappel ou d'un événement pour indiquer au bouton quand arrêter de tourner. Cela empêche l'utilisateur de cliquer en continu sur les boutons Excel ou PDF. Est-ce que quelqu'un sait un moyen de détecter la fenêtre de dialogue de fichier quand il n'a pas été créé en utilisant javascript? Je suis également ouvert à d'autres méthodes de rappel du côté du serveur.Pouvez-vous utiliser Javascript pour détecter une fenêtre de téléchargement de fichiers créée côté serveur?
Répondre
La façon dont je fais cela a été suggérée en réponse à une question que j'ai posée il y a quelque temps par T.J. Crowder. Je ne peux pas trouver la réponse de la dernière fois que j'ai écrit ceci parce que la fonction de recherche de Stackoverflow est si incroyablement boiteuse, donc je vais probablement taper dans un article de blog. L'idée de base est que votre code client (Javascript) doit ajouter un paramètre supplémentaire lorsqu'il soumet la requête pour le téléchargement. Le paramètre doit contenir une chaîne aléatoire générée (probablement que l'horodatage actuel est suffisant). Le serveur recherche alors ce paramètre et, lorsqu'il prépare la réponse avec le fichier téléchargé, il définit également un cookie et lui donne cette valeur aléatoire. Juste après le submit (ou juste avant, cela n'a pas vraiment d'importance), le code Javascript devrait démarrer un timer avec une routine pour regarder la valeur de document.cookie
et voir si elle contient cette chaîne aléatoire. Dès que le cookie contient cette chaîne, vous savez que le serveur a renvoyé sa réponse et que la boîte de dialogue de téléchargement du fichier a été présentée.
C'est drôle. J'ai essayé cette solution exacte hier, car c'était la seule solution que j'ai trouvée. Une fois le cookie installé du côté serveur, j'ai cherché du côté client en utilisant: setTimeout (complete = checkCookie ("fileComplete"), 2000); toutes les 2 secondes. Cela n'a pas fonctionné car je ne pouvais pas lire le côté client cookie. Peut-être que je vais creuser plus profondément dans cette idée et l'essayer encore aujourd'hui. Si cela fonctionne, je vous le ferai savoir. – Zacho
Eh bien, si vous créez une chaîne aléatoire sur le client, vous n'avez même pas vraiment besoin de rechercher un cookie particulier - vous pouvez juste regarder "document.cookie". Aussi, assurez-vous que votre serveur ne fait pas que vos cookies soient "http-only", sinon votre script ne peut pas les voir! Cette technique fonctionne comme un champion pour moi. – Pointy
- 1. Navigateur/gestionnaire de fichiers côté serveur Javascript
- 2. Détecter Silverlight côté serveur
- 3. Téléchargement de fichiers à l'aide de contrôles de saisie côté non serveur
- 4. Fusion Charts Téléchargement côté serveur
- 5. appeler javascript de côté serveur
- 6. Événements côté serveur JavaScript
- 7. javascript problèmes côté serveur
- 8. Contrôler (ralentir) le téléchargement côté serveur
- 9. Script avec JavaScript côté serveur
- 10. Détecter TimeoutException sur le côté serveur WCF
- 11. Progression du téléchargement de fichiers HTML5 - côté client seulement
- 12. sélection de fichiers multiples pour un contrôle de téléchargement
- 13. Meilleurs serveurs javascript côté serveur
- 14. ouvrir la fenêtre de téléchargement de fichier en utilisant javascript
- 15. Javascript: Détecter quand déplacer une fenêtre de navigateur
- 16. ASP.NET transmet une valeur javascript côté serveur
- 17. Comment faire pour obtenir une variable côté serveur en JavaScript
- 18. Téléchargement de fichiers sur le serveur
- 19. fonction d'appel côté serveur de côté client javascript
- 20. Téléchargement de fichiers sur le serveur de fichiers
- 21. Détecter si une page est dans un iframe - côté serveur
- 22. Javascript côté serveur prendre script
- 23. Appel Fonction javaScript côté serveur
- 24. javascript génération de fichiers côté client
- 25. SWFAppuyez sur la gestion côté serveur de plusieurs fichiers
- 26. Identification de Silverlight côté serveur
- 27. Téléchargement de fichiers
- 28. Puis-je ouvrir une fenêtre de navigateur pour voir une image créée par une application flex 3?
- 29. Meilleure façon de gérer les fichiers utilisateur côté serveur?
- 30. système de téléchargement de fichiers
Voir http://stackoverflow.com/questions/666468/ie6-detecting-when-the-file-download-popup-is-closed/667281#667281 –
Cette solution sonne bien, mais je ne suis pas clair quant à la pièce de charge. Si le iframe est chargé au chargement de la page, ou dynamiquement créé dans JS, l'onload se produit avant même que le formulaire ne soit soumis. Qu'est-ce que je rate? – Zacho
duplication possible de [Détecter lorsque le navigateur reçoit le téléchargement de fichiers] (http://stackoverflow.com/questions/1106377/detect-when-browser-receives-file-download) – Liam