2010-12-14 112 views
1

Comme certains d'entre vous le savent, Firefox n'appelle pas onunload in si la fenêtre ou l'onglet est fermé. Est-ce que vous connaissez un genre de travail?Existe-t-il une solution pour que Firefox n'appelle pas onunload lorsqu'une fenêtre est fermée?

Fondamentalement, j'ai besoin de savoir que l'utilisateur a terminé avec la fenêtre, donc je peux libérer un verrou. Avez-vous tous des suggestions?

J'ai entendu dire que le code robuste ne devrait pas utiliser onunload. Y a-t-il une alternative évidente?

Merci,

Grae

+0

Comment le verrou est-il réglé? Vous devriez vous assurer qu'il est retiré après un certain temps, sinon quelqu'un pourrait juste spammer votre serveur avec des requêtes HTTP qui créent un verrou et vous vous retrouverez avec une tonne de verrous qui ne seront jamais libérés. –

+0

Eh bien, le verrou est basé sur la session. Et vous ne pouvez en définir qu'un par session. –

+0

Ce n'est pas un délai d'attente actuellement, mais je peux en ajouter un. –

Répondre

2

Si votre serrure est sur le serveur, prendre le temps de lock-out après (par exemple) 30 secondes et une fonction sur la fenêtre renouveler automatiquement le verrouillage toutes les 25 secondes. Appelez la fonction à partir d'un setInterval. Lorsque la fenêtre est fermée, l'intervalle est annulé et le verrou expire 15 secondes plus tard (en moyenne). Brut mais efficace.

+0

Je ne pense pas que ce soit très brut. Je pense bien à l'idée. –

+0

Heureux d'être utile. onunload n'est PAS robuste, ne serait-ce que parce que l'électricité de l'ordinateur de navigation pourrait être coupée (ou déconnectée d'Internet ou le bâtiment pourrait tomber dans l'océan) donc onunload ne peut être appelé et vous devez vous assurer que * vos systèmes * continuent à fonctionner correctement. – Malvolio