2010-10-11 6 views
0

Je crée une application Web interne qui ne sera pas le public cible du Web. Je comprends la frustration des boîtes d'alerte et oblige les gens à faire certaines choses. Cela dit, ce que je tente de faire est de créer une fonction javascript, à moins qu'un utilisateur clique sur un lien sur une page spécifique, si elles essaient de naviguer loin de la page autre que d'utiliser un lien sur la page, Je voudrais les alerter et dire, désolé, vous devez cliquer sur le lien approprié pour quitter. Quel est mon problème, c'est que je dois verrouiller les champs, et ce que je peux faire quand un utilisateur frappe une page d'édition, je vais écrire à une table cet utilisateur à la colonne lockoutuser. Si une valeur existe, cet utilisateur peut accéder à l'enregistrement s'il est nul, cela signifie que personne ne modifie l'enregistrement. Si quelqu'un clique pour entrer dans cet enregistrement, ils verrouillent, mon moyen de mettre à jour la colonne lockoutuser pourrait être ajax sur déchargement de la page, mais la page pourrait être déchargée pour 2 raisons, 1 le formulaire d'édition est soumis ou l'utilisateur quitte le page.Utiliser l'alerte Javascript pour garder les utilisateurs sur une page

Une alerte qui dirait, désolé, vous pouvez laisser cet enregistrement sans cliquer sur le gros bouton rouge qui dit déverrouiller, et forcer l'utilisateur sans rafraichir pour rester sur la page.

Je comprends la machine pourrait tomber en panne et ou un alt f4 ou une fin de tâche brute sur le navigateur encore me laisser d'autres travaux pour débloquer le dossier

+4

Le verrouillage d'une table est une très mauvaise idée. Vous ne pouvez pas empêcher quelqu'un de fermer un onglet du navigateur, ou de taper une nouvelle URL dans la fenêtre URL, ou de cliquer sur un signet, etc. – Pointy

+0

Je comprends, mais il s'agit d'une application interne et les gens seront informés sur la façon d'utiliser il. Si vous tapez une nouvelle URL ou si vous cliquez sur un signet, cette page doit toujours être déchargée. –

+0

Mauvais mauvais. Utilisez une meilleure approche, même aussi simple que [Concurrence optimiste] (http://en.wikipedia.org/wiki/Optimistic_concurrency_control). Le JavasSript lui-même devrait simplement «s'habiller» pour empêcher l'utilisateur de naviguer accidentellement et de perdre son travail (par exemple, comme dans Gmail). –

Répondre

1

Vous devez utiliser l'événement onunload de la page pour présenter une messagebox lorsque l'utilisateur essaie de quitter votre page. Découvrez cet exemple: http://www.codetoad.com/javascript/miscellaneous/onunload_event_eg.asp

+0

C'est probablement le meilleur que vous pouvez faire, mais l'utilisateur peut toujours cliquer sur le bouton qui signifie «Je m'en fous de toute façon». – Pointy

+0

Vous pouvez contrôler les boutons dans la boîte de message et empêcher l'utilisateur de quitter la page. Mais c'est juste une page web, l'utilisateur peut simplement fermer l'onglet ou le navigateur. Il n'y a aucun moyen d'empêcher totalement l'utilisateur de partir. – Merrimack

+0

Je comprends cela. Il y a des choses que vous pouvez faire pour alerter quelqu'un, qui effectuera un travail, pour les orienter dans la bonne direction. –

Questions connexes