javascript - ouverture iframe caché pour le téléchargement de fichier sur le document prêt
Je suis en train d'utiliser cette astuce pour ouvrir un dialogue téléchargement de fichier sur le document de prêt. Le même truc a travaillé une autre fois pour moi, mais cette fois l'iframe a été ajouté après un appel ajax. C'est l'extrait de code:
<script type="text/javascript">
$(document).ready(function() {
var url='/my_file_url/';
var _iframe_dl = $('<iframe />')
.attr('src', url)
.hide()
.appendTo('body');
});
</script>
Tandis que l'iframe est imprimé correctement dans le code html, il n'a pas le comportement attendu: pas de fichier à télécharger popup s'affiche après le chargement de la page. Toute aide sur pourquoi?
- êtes-vous sûr que votre syntaxe est correcte ?
- il n'y a pas de fermeture });
- Les en-têtes correcte de votre fichier d'url? (si vous l'ouvrez dans votre navigateur, vous avez le téléchargement pop-up?
- Vous n'êtes pas la fermeture de votre
$(document).ready(function(){
- aucun message d'avertissement ou d'erreur signalé par Firebug. je repat le même code a travaillé onnanother page, utilisé dans un appel ajax.
- Si vous fermez votre fonction et l'invocation avec
});
jsfiddle.net/aMcNV - désolé pour le code de la confusion. le vrai code js imprimé est présent (entre parenthèses correctement fermé): jsfiddle.net/9dbqL de sorte que la différence avec @PaulS.la solution semble être seulement "de données:application/octet-stream"
Vous devez vous connecter pour publier un commentaire.
Ça marche très bien, en supposant que le MIME est d'un type qui va lancer un téléchargement, par exemple application/octet-stream. Vous pouvez rencontrer un problème lorsque le navigateur est rendu et n'offrant pas de téléchargement grâce à un lecteur pdf.
Une autre solution, si le client est sur un navigateur moderne, est d'utiliser un
<a>
avec href et télécharger ensemble, puis de simuler un clic sur elle..pdf
fichier exta.click()
en place de laev
choses.element.click
a été dans la spec que récemment? Vous ne pouvez les faireelement.click
sur unelement
qui est dans leDOM
. Votre exemple n'a pasa
dans leDOM
, si vous avez besoin d'un navigateur moderne comme Chrome pour faireelement.click
sur elle, parce que les 10 dernières années, il ne serait pas comme ça.