Envoyer une fonction quand on fait precedent [Html/Js] - HTML/CSS - Programmation
Marsh Posté le 03-12-2007 à 17:26:18
tu peux essayer avec l'evenement onUnload, mais c'est sans garantie
Marsh Posté le 03-12-2007 à 17:29:29
et on l'utilise comment exactement.
je fait onunload de la page qu'on quitte ?
ca s'utilise du genre < body onunload=fonction() > c'est ca ?
je prefere demander la car tout mon boulot est rester au taff.
Marsh Posté le 03-12-2007 à 17:34:35
oui c ca
c le meme principe que l'evenement load : window.onunload = taFonction;
Chtite doc : http://developer.mozilla.org/en/do [...] w.onunload
mais encore une fois, c sans garantie, j'ai jamais "joué" avec ca
Marsh Posté le 03-12-2007 à 17:40:16
généralement sur le unload il est trop tard. Il vaut mieux utiliser beforeunload
Marsh Posté le 03-12-2007 à 17:42:03
et c compatible avec autre chose que IE ca ?
EDIT:
ah oui ! merci pour l'info ca peut servir
Marsh Posté le 03-12-2007 à 18:11:05
beforeunload, c'est un truc de base aussi ?
effectivement, je vient d'essayer le unload, ca donne rien.
edit : par contre comme un peu pas faire executer de requete mysql dans un JS, j'ai voulu lui faire aller sur une page php qui enleve le flag, mais comme on fait precedent, ca marche pas.
quelqu'un a une idée pour virer mon flag avec le onbeforeunload ? la je seche completement.
Merci
Marsh Posté le 03-12-2007 à 21:15:59
chico008 a écrit : beforeunload, c'est un truc de base aussi ? |
C'est le moment d'utiliser l'AJAX
Marsh Posté le 04-12-2007 à 09:30:02
SICKofitALL a écrit : |
moi j'aurais dit: "C'est le moment de comprendre comment fonctionne un site web"
AMHA, là tu essayes de faire quelque chose de complétement inutile|inefficace.
Marsh Posté le 04-12-2007 à 09:34:21
anapajari a écrit : |
c pas faux
il faut surement revoir le concept, mais en creusant du cote du XHR, ca peut tjrs servir plus tard
Marsh Posté le 04-12-2007 à 11:30:41
Bah si vous avez d'autres moyen de gerer ca je suis preneur hein.
moi j'etait parti sur mon système de flag car ca me paraissait le plus simple, mais si vous avez d'autres methodes, je suis aussi preneur.
Marsh Posté le 04-12-2007 à 11:58:12
tu considères ton flag comme périmé au bout de X minutes (en dehors du précédent, tu peux avoir le problème du mec qui reste sur un écran et se barre en congé 3 semaines).
A chaque demande de modifs tu vérifies que le propriétaire du flag est bien celui qui fait la modif.
Marsh Posté le 04-12-2007 à 12:21:32
bah y'a pas de gestion de user deja, on bosse tous dans la meme equipe.
on est 8 au max a faire ca, tous les uns a coter des autres.
ca elimine aussi le truc du mec qui part en congé, car dans tout les cas si on constate que quelqu'un a pris un job et l'a toujours pas rempli au bout de X temps (20 minutes au max), on le lui rappellera (a coup de baffes generalement )
Marsh Posté le 06-12-2007 à 18:27:51
Bon, j'ai essayer avec de l'AJAX, mais ca ne donne rien.
dans ma balise body j'ai un onbeforeunload=test('1')
ma fonction :
function test(job)
{
if(window.XMLHttpRequest) // Firefox
defl = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
defl = new ActiveXObject("Microsoft.XMLHTTP" );
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..." );
}
defl.open('GET', './deflag.php?id='+job, true);
defl.send(null);
}
deflag.php
y'a rien de particulier, je recupere ma variable avec un $_GET['id'];
et je balance une requete simple type
update table set flag=0 where id='$id'
la requete marche aussi, en passant l'url a la main, ca fonctionne.
Par contre tout ca cumuler, ca marche pas.
J'ai remarquer qu'en faisant precedent, la fonction ne se declenchait pas, par contre si c'est un changement de page demander par un lien ou une autre fonction, la on passe bien dedans, sauf que moi c'est quand on fait un precedent que je veut qu'elle se declenche :s
la j'ai vraiement plus d'idée, si vous avez la solution, ou un autre methode pour ce genre de choses, je suis ouvert a toutes suggestion.
Marsh Posté le 06-12-2007 à 20:41:48
chico008 a écrit : si la personne fait precedent, il revient a la liste, le job n'est pas remplis, mais le flag lui reste posé |
A mon avis, le clic sur "precedent" n'est qu'un cas parmi tant d'autres cas qui font que le flag reste pose ...
Marsh Posté le 07-12-2007 à 08:57:29
bah pour le moment c'est le seul, le navigateur lui je craint pas la fermeture sauvage, on est tous sous FF et y'a toujours un onglet ou 2 avec une page internet.
y'a vraiement que le coup du precedent qui me gene,
ok, on peut "eduquer" les collègues pour pas faire de precedent la dessus, mais ca arrive tellement vite aussi.
Marsh Posté le 07-12-2007 à 09:06:19
Dans ce cas, voici une idee a la con : quand ton client charge la page de la liste de jobs, tu effaces tous les drapeaux associes a ce client. Ca resout localement ton probleme de "precedent" mais ca en cree de nouveaux, a toi de voir.
Marsh Posté le 07-12-2007 à 09:24:33
bah ouais mais non, car quand tu fait precedent, tu revient a la page sans la charger, donc la requete ne s'executera pas.
Marsh Posté le 07-12-2007 à 09:45:54
Quoi que tu fasses, y'aura toujours des problèmes.
Le seul moyen valable, c'est d'utiliser un timeout. Si au bout de 5 minutes pas d'activité, le flag se vire...
C'est dans ce genre de cas qu'on voit les limites du web pour les applications
Marsh Posté le 07-12-2007 à 11:10:15
mmm, ma page avec le listing se rechargeant automatiquement toutes les 2 minutes, je pense que je fait opter pour ca, verification de la durée du flag, si c'est a plus de 5 minutes, RAZ.
Marsh Posté le 03-12-2007 à 16:52:23
Bonjour, bon, je vais essayer d'etre clair, car c'est pas evident.
J'aimerais pouvoir faire en sorte que quand l'utilisateur fait un 'precedent' sur ma page, que je puisse executer un script juste avant que la page ne change.
Precent par bouton de navigation, fonction souris, ou que sais je encore.
Pourquoi ?
en fait j'ai fait un système de saisi de job qui tombe.
la liste est mise a jour regulièrement, et j'ai mis un système de flag pour pas que 2 personnes remplissent le meme job en meme temps.
quand un personne va dans la fiche du job, un flag est posé pour que personne d'autre ne puisse l'editer en meme temps, quand il a fini ce flag est enlever.
Problème tres con que j'ai constaté, si la personne fait precedent, il revient a la liste, le job n'est pas remplis, mais le flag lui reste posé, du coup plus moyen de faire la modification.
j'aimerais donc pouvoir trouver un moyen pour enlever le flag, meme quand on fait precedent, via une fonction qui execute une requete mysql par exemple.
J'espere que c'est comprehensible.
Merci pour votre aide.