IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

jQuery dans un onbeforeunload


Sujet :

jQuery

  1. #1
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut jQuery dans un onbeforeunload
    Bonsoir,

    je bloque sur un bout de code qui ne semble pas être executer

    voici le petit bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function leavechat()
    {
    	$.getJSON('game.php?page=chat&mode=offline&ajax=1',function (data)
    	{
    		alert(data); // Pour vérifier l'execution du code
    	});
    }
    Ce code fonctionne parfaitement quand il est appeler, sauf dans l'event onbeforeunload.
    Sachant que si je met une alert() avant le getJSON, il s'affiche bien :-\

    Du coup je comprend pas vraiment pourquoi ça ne fonctionne pas.

    Si quelqu'un aurai un semblant d'idée, je suis preneur


    EDIT: si je rajoute un alert() après le getJSON, tout fonctionne bien également

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    fait un test du genre (dans le unload) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var img = new Image();
    img.src = 'xxxxx/script.php';
    dans ton PHP tu fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_put_contents('ce fichier est cree.txt', microtime(true) . "\n");
    tu verras si le script a le temps d'appeler le PHP (qui crée le fichier), et si oui alors l'appel ajax est peut etre + lent ... dans ce cas faut bloquer/empecher la fermeture de la page tant que tu n'as pas eu ton retour

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    C'est normal...
    getJSON() fait un appel au serveur et rend la main avant d'avoir reçu la réponse.
    Donc quand la réponse est supposée être reçue, tu as déjà quitté la page.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Je comprend mieux, il faut donc que j'attende une réponse avant de poursuivre

    Je vais plancher la dessus, merci de l'infos

    EDIT: D'ailleurs sous chrome mon code précédent ne semple pas fonctionner

  5. #5
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    tu as fait le test ?
    est ce que le fichier est bien créé ?
    test sur les differents navis, je sais qu'il y a une couille avec opera !

  6. #6
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Avec chrome ça ne fonctionne pas toujours, IE et Firefox sans problème.
    J'ai pas tester les autres, je restr sur les 3 plus populaires pour le moment
    Faut donc que je trouve une autre solution :-\
    Y'a t-il une solution pour annuler la fermeture, executer un code et ensuite fermer la page ?

    Je sais qu'on peu demander confirmation avant la fermeture d'une page, en partant de ce principe, je pense qu'il est donc possible d'annuler la fermeture, d’exécuter la page et de la fermer ensuite un simple close();

    Mais comment faire ^^

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    pour Chrome fait un essai en ligne et non en local.

  8. #8
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    J'ai testé les deux, et ça fonctionne aléatoirement, suivant le temps de réponse serveur :-\

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $( window ).on( "beforeunload", function(){
    	// votre code
     
    	/*
    	 * provoque l'ouverture d'un dialogue de confirmation,
    	 * ce qui laisse un peu de temps avant la fermeture.
    	 */
    	return false;
    });

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Bonsoir,

    j'ai essayé de copier le code, mais j'ai une erreur : Erreur*: TypeError: $(...).on is not a function

    J'ai copier le code dans ma fonction js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function leavechat()
    {
    	$(window).on( "beforeunload", function(){
     
    	$.get('game.php?page=chat&mode=offline&ajax=1');
    	alert("Vous avez \351t\351 deconnect\351 du tchat");	
    	return false;
    });
    }
    Boulette ou pas ?

    EDIT: j'ai cherche une solution et j'ai trouver ça :
    La solution est plutôt simple rassurez vous. Il suffit d'utiliser la fonction JQuery.noConflict(); et de remplacer tous les $ par des JQuery. Elle permettra de réassigner toutes les variables de l'objet $ à ce JQuery, et évitera les conflits.
    Mais ça ne fonctionne pas non plus, il me dis que JQuery is not a function

  11. #11
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Il manque une accolade fermante pour terminer ta fonction.

  12. #12
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Erreur de copier coller, elle est bien présente dans mon script

  13. #13
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Et pourquoi mets-tu $(window).on( "beforeunload", function() ... dans une autre fonction ?
    Essaies de l'écrire directement selon le modèle de danielhagnoul

  14. #14
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    J'ai essayé les deux en faite, dans la fonction, et directement dans le script, et il me dis toujours $[...) is not a function

  15. #15
    Membre émérite Avatar de Geoffrey74
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2007
    Messages
    515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 515
    Par défaut
    Bon finalement je vais faire une sorte de ping régulier pour vérifier la présence d'un utilisateur, et le déconnecte le cas échéant;

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/11/2009, 17h38
  2. jQuery dans jQuery - pas trouvé mieu comme titre
    Par SpIrIt505050 dans le forum jQuery
    Réponses: 10
    Dernier message: 06/02/2009, 14h37
  3. selecteur jquery dans une condition
    Par godot.beta dans le forum jQuery
    Réponses: 3
    Dernier message: 07/11/2008, 14h16
  4. Insérer du javascript/jquery dans un menu
    Par Little_flower dans le forum jQuery
    Réponses: 7
    Dernier message: 07/05/2008, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo