2013-08-11 6 views
2

J'ai une page sur laquelle un utilisateur peut soumettre un formulaire contenant une vidéo. J'ai placé un message "S'il vous plaît attendre, télécharger maintenant" pendant le téléchargement de la vidéo, mais apparemment, ce n'est pas suffisant.Empêche la fermeture accidentelle de la fenêtre du navigateur lors de la soumission

SO: Je veux vous assurer que l'utilisateur n'a pas naviguer accidentellement hors de la page, alors j'ai utilisé ce code:

window.onbeforeunload = function() { 
    return "Please make sure, the video has finished uploading before closing this window"; 
}; 

Il y a juste un problème: Le système contient deux séparés. fichiers php; un formulaire et une page de téléchargement/remerciement. Cela signifie que si je place le code sur le formulaire, il exécute le code trop tôt (quand le bouton submit est appuyé) et si je le place dans le fichier send.php, il s'exécute trop tard puisque la vidéo doit upload avant que le head-tag soit lancé.

Des bonnes idées?

P.S. Une solution possible pourrait être de placer le code sur la page de formulaire et d'appeler la page en utilisant AJAX et la capacité de traitement des fichiers, mais j'ai le sentiment que cette solution de contournement pourrait avoir causé des vidéos abandonnées - donc je joue en toute sécurité.

Répondre

1

Situation résolu!

J'ai enlevé la soumettre fonctionnalité du bouton et l'a remplacé par ceci:

<input type="button" name="button" id="button" value="Send video" onclick="sendInformation();" /> 

J'ai ensuite créé un javascript qui soumettait les informations, mais en même temps, l'initialisation du onbeforeunload code .

document.getElementById("pleasewait").style.visibility = 'visible'; 
document.getElementById("myForm").submit(); 
window.onbeforeunload = function(e) { 
    return "Please make sure, the video has finished uploading before closing this window."; 
}; 

Il a également l'effet indésirable, que le onbeforeunload code est invalidée, le moment la page upload.php a chargé complètement - afin que l'utilisateur ne soit pas demandé deux fois lors de la fermeture d'un téléchargement réussi.

Cela fonctionne parfaitement.

0

Pouvez-vous ajouter le code JS lorsque l'utilisateur soumet le formulaire?

<form action="upload.php"> 
    <input type="file" name="myfile" /> 
    <input type="submit" /> 
</form> 

upload.php

<?php 
    // Validate the data, copy the file, etc. 

    echo '<script>window.onbeforeunload = function(e) { return "Please make sure, the video has finished uploading before closing this window"; }</script>'; 
?> 

Cela devrait fonctionner. Cependant, je pense que vous devriez donner la possibilité de quitter:

<?php 
    echo '<script>window.onbeforeunload = function(e) { return confirm("Do you want to leave?"); }</script>'; 
?> 
+0

Hélas, cela n'a pas fonctionné. Le code n'est pas exécuté avant un téléchargement réussi. Cependant, je viens de le faire fonctionner il y a 5 minutes; S'il vous plaît voir la réponse ci-dessus ... – Anders

Questions connexes