Le code JavaScript ci-dessous comporte deux étapes.Comment j'attends que location.href se termine en JavaScript?
Étape 1: accédez à .pdf, .doc, .exe ou à quelque chose qui n'est pas html natif. Si location.href a pris le contrôle de la fenêtre du navigateur, il n'est pas nécessaire de passer à l'étape 2. (Les fichiers PDF prennent généralement le contrôle de la fenêtre du navigateur). La plupart des autres choses lancent un processus de gestionnaire de téléchargement. Tels que .exe. Mais il y a certaines choses telles que les documents Word qui pourraient être soit un téléchargement ou un spectacle directement dans la fenêtre du navigateur en fonction de la configuration du navigateur. Je veux qu'il fasse ce que hef.location ferait faire.
Étape 2: Mais si le téléchargement d'un fichier tel qu'un fichier .exe est terminé, passez à la page d'accueil.
Ou solution pour attendre juste 5 secondes entre les étapes 1 et 2 semblent fonctionner la plupart du temps. Mais sur une connexion plus lente, cela ne fonctionne pas toujours. Ensuite, il va à la page d'accueil sans terminer le premier appel href.location et ils ne voient jamais le PDF et ne voient que la page d'accueil.
FYI ... La raison pour laquelle je les enveloppe dans setTimeOut est liée à ce problème de firefox. Stack Overflow: 864633 assigning-to-document-location-href-without-clobbering-history
Ma question: Y a-t-il un moyen de savoir quand le processus location.href est terminé?
<script language="JavaScript"><!--
function windowOnLoad() {
setTimeout(function(){
location.href='/someurl/something.pdf'; //sometimes this is .doc file
},0);
setTimeout(function(){
location.href='/homepage';
},5000);
return false;
}
//-->
</script>
Avez-vous PHP installé? – powtac
Vous ne serez pas en mesure de le faire avec javascript seul, sauf si vous utilisez ajax pour poster une demande. Lisez ceci, cela pourrait aider: http://stackoverflow.com/questions/1524487/browser-download-complete-event – Andrew