2010-07-28 5 views
2

Je développe un module personnalisé pour Drupal traitant de la gestion de documents. À ce stade, le module se charge, vous pouvez télécharger des fichiers (via un iframe caché et certaines requêtes ajax), parcourir les répertoires et définir différents niveaux d'autorisations. Et tout fonctionne parfaitement dans Firefox.Le téléchargement de fichiers iFrame avec IE produit un dialogue de téléchargement

Problème: Dans IE cependant, je rencontre un problème. Pour une raison quelconque, lorsque je télécharge un fichier, la boîte de dialogue de sauvegarde apparaît et me demande de télécharger le fichier que je viens de télécharger. On dirait qu'il me demande de le télécharger à partir de l'emplacement tmp des serveurs Web, car cela semble être le nom du fichier et autres. Toutefois, si j'appuie sur annuler et actualiser la page, je peux voir que le fichier que j'ai téléchargé a effectivement été téléchargé sur le serveur.

Voici comment le processus de téléchargement fonctionne.

  1. Cliquez sur le bouton de téléchargement. Le bouton de téléchargement est l'élément de formulaire d'entrée de fichier standard masqué et placé sur une version stylée du bouton. En cliquant dessus, le dialogue "Choisir un fichier" s'ouvre.
  2. Sélectionnez un fichier et cliquez sur "Ouvrir". Un dialogue modal apparaît vous demandant de plus amples informations sur le fichier. Le modal fait partie du même élément de formulaire mais reste invisible jusqu'à ce que vous cliquiez sur le bouton Télécharger.
  3. Cliquer sur Enregistrer dans le modal entraîne le téléchargement du fichier. L'attribut "action" sur le formulaire pointe vers une page et la cible est l'iframe.
  4. L'iFrame est interrogé quelques fois par seconde pour voir si son contenu a changé. Lorsque le fichier est téléchargé, un message "succès" apparaît dans l'iframe. Comme il appartient au même domaine, je gratte le contenu dans l'iframe.
  5. Une fois que le iFrame dit que le fichier a été téléchargé, j'utiliser quelques JS pour mettre à jour l'application avec le nom du fichier

Puisque je ne peux pas utiliser Firebug dans IE, je dois en tenir à en utilisant la barre d'outils Microsoft Developer, ce qui rend très difficile de savoir si l'étape en gras est réellement en cours. Cela semble être le cas, puisque le fichier est en train d'être téléchargé. Il est juste interrompu par ce dialogue de téléchargement de fichiers.

Répondre

2

Puisque personne ne semble avoir de réponse, je posterai le correctif que j'ai trouvé. Je doute que ce soit parfait, mais c'est la meilleure solution que je pourrais trouver.


Il s'est avéré être un problème avec le sondage comme suspecté. Le correctif a fini par être au lieu de sortir json vers l'iFrame, juste sortir du JavaScript qui appelle une fonction qui met à jour la fenêtre principale. C'est simple.

+0

Je suis très surpris ce n'est pas un problème commun avec une bonne réponse :( –

Questions connexes