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

JavaScript Discussion :

Indicateur de lecture


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut Indicateur de lecture
    Bonjour, je réalise une application permettant d'ouvrir des fenêtres modal. Lors de l'ouverture d'une fenêtre j'indique dans ma base de donnée que le fichier est ouvert par un utilisateur. Puis à la fermeture de celle ci je reset cet indicateur.

    Le problème est que si l'utilisateur ferme la fenêtre en utilisant F5 ou alors si il quitte le navigateur je ne passe pas par mes scripts de reset.

    N'ayant pas d'autre idée que celle présenté plus haut et ne trouvant aucune solution pertinente je viens vers vous pour élargir mes connaissances.

  2. #2
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    À mon avis, tu pars d'une mauvaise conception. Une base de données ne correspond pas tout à fait au schéma lecteurs-rédacteurs classique. Comme tout contenu servi sur le web, le lecteur reçoit en réalité une copie et pas l'original, donc il ne sera pas dérangé si l'original est modifié pendant sa lecture.

    Pour résumer : sur le web, quand un lecteur vient, tu lui files une copie et tu l'oublies !

  3. #3
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Le peu d'information et les mots que j'ai utilisé ne t'ont pas aidé je pense.

    En fait il s'agit ni plus ni moins de formulaires contenus dans des modals.

    Chaque formulaire correspond à un type de document commercial (devis, bon de commande, de livraison, facturation). Lorsque j'ouvre une fenêtre et donc un formulaire pour qu'il soit éditer les informations saisies et ou modifiées seront enregistré dans la BDD. Pour éviter que plusieurs personnes éditent en même temps le même devis par exemple j'ai pensé à mettre un indicateur de lecture qui correspond à l'ID de l'utilisateur travaillant sur le document. Si il y a un ID j'informe les autres utilisateurs que ce "fichier" est en cours de traitement par "nom, prénom" de l'utilisateur.

    Par contre si on quitte brusquement le navigateur la gestion de sortie ne se fait pas.

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Ah ok, c'est plutôt un indicateur d'écriture en fait.

    En te lisant, l'idée qui me vient à l'esprit c'est un système de gestion de versions, mais c'est trop lourd à mettre en place.

    Je propose une solution qui repose sur JavaScript. Cela suppose qu'il faudra trouver une alternative sans JS, ou bien interdire l'accès aux utilisateurs qui n'ont pas JS (c'est extrême et je ne le recommande pas).

    Ma solution s'inspire de http://www.zachleat.com/web/dont-let...nbeforeunload/. Il s'agit de lancer une requête Ajax synchrone au moment de l'évènement unload. D'habitude, je considère l'Ajax synchrone comme une mauvaise pratique, mais là c'est le comportement recherché : pendant que la requête charge, l'interface utilisateur est gelée, donc la fenêtre ne se ferme pas.

    Maintenant c'est à toi de mettre ce qu'il faut dans cette requête pour que ça lance ton script de reset correctement

  5. #5
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas eu le temps de suivre le lien mais j'ai moi même penser à une solution identique. Le problème est que le navigateur prend le dessus et de ce fait la requête ( dont j'avais bien pensé a effectuer en synchrone ) n'a pas toujours le temps de s’exécuter...

    de mémoire mon code ressembler a ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    window.onbeforeunload = function( ) {
     
     $.ajax( { type, url, param } );
    }
     
    window.onunload = function( ) {
     
     $.ajax( { type, url, param } );
    }
    J'ai essayé ces deux syntaxes. avec je n'ai pas de problème ça fonctionne, sinon ça ne fait rien.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Une solution assez simple serait d'effectuer une requête ajax toutes les x secondes enfin de faire savoir au serveur que l'utilisateur édite toujours la page.
    Le serveur serait alors en mesure via un timeout de savoir s'il peut libérer la page ou non.

    Bien sur, comme dit précédemment, cela oblige l'utilisateur à activer JS.

  7. #7
    Membre confirmé
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Points : 549
    Points
    549
    Billets dans le blog
    1
    Par défaut
    Je me suis inspirer de la dernière réponse pour construire un script de libération par rapport à un intervalle de temps.

    J'enregistre toutes les minutes un timestamp lors d'une édition. A chaque requête le serveur passe par un script de libération si la différence de temps entre l'enregistrement et le timestamp est supérieur à 5 min.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture de fichiers ".WAV"...
    Par 0x4e84 dans le forum Langage
    Réponses: 2
    Dernier message: 03/09/2002, 09h43
  2. Pb Lecture de bitmap monochrome
    Par Loïc38 dans le forum C++Builder
    Réponses: 4
    Dernier message: 02/07/2002, 18h24
  3. Lecture d'une image bitmap
    Par Geronimo dans le forum x86 32-bits / 64-bits
    Réponses: 18
    Dernier message: 28/06/2002, 12h01
  4. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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