Créé dynamiquement iframe utilisé pour télécharger le fichier déclenche onload avec firebug, mais pas sans
MODIFIER: que ce problème est "résolu" à la pointe de travail, je suis à la recherche de l'information sur les raisons. Pour le fixer, voir mon commentaire ci-dessous.
J'ai une application web qui, à plusieurs reprises téléchargements de fichiers wav dynamiquement (après un délai d'attente ou, comme demandé par l'utilisateur) dans une iframe dans le but de provoquer le défaut d'un lecteur audio pour jouer. L'application vise seulement FF 2 ou 3. Afin de déterminer quand le fichier est téléchargé, je suis l'espoir d'utiliser la fenêtre.gestionnaire onload de la balise iframe. Basé sur cette stackoverflow.com réponse je suis entrain de créer un nouveau iframe à chaque fois. Tant que firebug est activé sur le navigateur à l'aide de l'application, tout fonctionne très bien. Sans firebug, le onload n'est jamais déclenché. La version de firebug est 1.3.1, alors que je l'ai testé Firefox 2.0.0.19 et 3.0.7. Des idées comment je peux obtenir le onload de la balise iframe fiable pour déclencher lorsque la wav fichier téléchargé? Ou est-il une autre façon de signaler la fin du téléchargement? Voici le code:
HTML (cachés seul attribut display:none;):
<div id="audioContainer" class="hidden">
</div>
JavaScript (on pourrait également utiliser jQuery, mais innerHTML est plus rapide qu'une page html() de ce que j'ai lu):
waitingForFile = true; //(declared at the beginning of closure)
$("#loading").removeClass("hidden");
var content = "<iframe id='audioPlayer' name='audioPlayer' src='" +
/path/to/file.wav + "' onload='notifyLoaded()'></iframe>";
document.getElementById("audioContainer").innerHTML = content;
Et le contenu de notifyLoaded:
function notifyLoaded() {
waitingForFile = false; //(declared at beginning of the closure)
$("#loading").addClass("hidden");
}
J'ai aussi essayé de créer l'iframe, via document.createElement, mais j'ai trouvé le même comportement. Le onload déclenchée chaque fois avec firebug activé et jamais sans elle.
EDIT:
Correction de l'information sur la façon dont l'iframe est déclaré et a ajouté la fonction de rappel de code. Non, pas de console.les appels du journal ici.
OriginalL'auteur justkt | 2010-03-16
Vous devez vous connecter pour publier un commentaire.
Une vieille question, mais pour l'avenir de référence:
En ce qui concerne mon expérience onLoad n'est pas appelée pour les téléchargements de fichiers. Une façon de le résoudre est d'utiliser des cookies, comme ils le font ici http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser/
Je peux ouvrir le lien quand je copie-coller dans un nouvel onglet. Cette page a bloqué lorsque l'url de renvoi est cette page? 🙂
OriginalL'auteur mollwe
Voici un exemple qui fonctionne pour moi, sans ouvrir Firebug (testé dans FF 3.6.2 Mac): http://www.jsfiddle.net/Kukry/
Je suis en utilisant jQuery
.load()
de l'événement au lieu deonload
.Remarque que je suis le chargement d'un fichier JavaScript, pas un fichier audio, de façon à ce que pourrait faire une différence.
OriginalL'auteur bcherry
Peut-être que vous appelez Firebug fonction interne, comme la console.log(), quelque part? Dans ce cas, Firefox a déclenché une exception qui peut arrêter l'exécution si Firebug n'est pas active.
OriginalL'auteur Johan