Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1578 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Comment modifier tous les href d'une page sans les modifier...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment modifier tous les href d'une page sans les modifier...

n°1349292
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 19-04-2006 à 00:43:50  profilanswer
 

Voilà, je suis en train de développer une petite application PHP.
Seulement voilà, il arrive que le temps de génération soit supérieur à 0.8 secondes.
J'ai donc fait un joli petit div invisible avec un joli message "patientez S.V.P." avec un joli sablier qui s'anime tout ça, fantastique, on dirait du Star Wars... euh, scusez, je m'emporte.
 
Bon bref, dans mes href, je rajoute un onclick="affwait"
 
Ma fonction affwait :

Code :
  1. function affwait() {
  2.  setTimeout('affpatienteexec()',800);
  3. }
  4. function affpatienteexec() {
  5.  document.getElementById('patientediv').style.display="block";
  6. }


 
Rien de bien méchant, en plus, ça marche impeccable, la plupart du temps, le message ne s'affiche pas car les pages s'affichent plus vite que 800ms.
 
Cela dit, mon problème, c'est que ça m'oblige à modifier tous mes href à la main pour rajouter mon onclick hors, il doit y avoir un moyen de déclencher un script qui me le ferait tout seul en début de page.
 
Mon problème, bah c'est que je ne connais pas ce moyen. :D
 
Si quelqu'un pouvait m'aiguiller (j'accepte même les RTFM si ils sont en français). :D  
 
Merci d'avance. :jap:


Message édité par The-Shadow le 19-04-2006 à 00:47:47
mood
Publicité
Posté le 19-04-2006 à 00:43:50  profilanswer
 

n°1349302
nargy
Posté le 19-04-2006 à 01:37:30  profilanswer
 

tu peut obtenir une liste des liens dans ta page à l'aide de ``document.links``.

n°1349363
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2006 à 09:57:24  profilanswer
 

Dans ton cas le plus simple est de faire l'appel sur le "unload".
Il te suffit de rajouter un onunload sur ton body avec l'appel de ta fonction et on en parle plus :)
 

nargy a écrit :

tu peut obtenir une liste des liens dans ta page à l'aide de ``document.links``.


mouais... La tendance est plutot à l'utilisation du DOM donc autant utiliser document.getElementsByTagName('a') qui te retourne une DOMNodeList

n°1349371
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 19-04-2006 à 10:11:10  profilanswer
 

anapajari a écrit :

mouais... La tendance est plutot à l'utilisation du DOM donc autant utiliser document.getElementsByTagName('a') qui te retourne une DOMNodeList


Pourrais tu me mettres sur la voie de comment exploiter ce retour.
En attendant ou si tu ne répondais pas, je cherche sur Google, mais bon, j'suis pas un boss en js.

n°1349379
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2006 à 10:19:06  profilanswer
 

nan mais là t'as pas besoin du getElementsByTagName ... :o
tu changes juste ta balise body:

Code :
  1. <body ... onunload="affwait()">
  2. ...
  3. </body>


et c'est fini [:spamafote]

n°1349388
nargy
Posté le 19-04-2006 à 10:30:25  profilanswer
 

document.links, c'est
document.getElementsByTagName('a')
et document.getElementsByTagName('area')

n°1349399
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 19-04-2006 à 10:42:03  profilanswer
 

anapajari a écrit :

nan mais là t'as pas besoin du getElementsByTagName ... :o
tu changes juste ta balise body:

Code :
  1. <body ... onunload="affwait()">
  2. ...
  3. </body>


et c'est fini [:spamafote]


ça ne fonctionne pas. :'(
J'ai tenté de rajouter un alert avant l'affichage, apparemment, la fonction onunload s'exécute juste avant le réaffichage de l'autre page, pas dès l'instant où on cliques pour quitter la page. :/

n°1349426
nargy
Posté le 19-04-2006 à 11:05:40  profilanswer
 

Code :
  1. <script language="JavaScript" type="text/javascript">
  2.     <!--
  3.     function modif_liens()
  4.     {
  5.      for(i=0;i<documents.links.length;i++)
  6.        document.links[i].onclick='return affwait()';
  7.      for(i=0;i<documents.forms.length;i++)
  8.        document.forms[i].onsubmit='return affwait()';
  9.     }
  10.     document.onload='modif_liens()';
  11.     -->
  12.     </script>


PS: affwait() retourne true.

Message cité 1 fois
Message édité par nargy le 19-04-2006 à 11:06:38
n°1349432
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2006 à 11:16:28  profilanswer
 

The-Shadow a écrit :

ça ne fonctionne pas. :'(
J'ai tenté de rajouter un alert avant l'affichage, apparemment, la fonction onunload s'exécute juste avant le réaffichage de l'autre page, pas dès l'instant où on cliques pour quitter la page. :/


Oui, excuse moi :)
Dans ton cas précis c'était "onbeforeunload" dont tu avais besoin, le unload est effectivement trop tard...
 

Code :
  1. <body ... onbeforeunload="affwait()">
  2. ...
  3. </body>


 
 

n°1349462
nargy
Posté le 19-04-2006 à 11:33:52  profilanswer
 

onbeforeunload ne fonctionne pas comme tu le décrit avec FF.
il s'active quand je ferme la page, pas quand je clique.
errata: je clique mal.

Message cité 2 fois
Message édité par nargy le 19-04-2006 à 11:36:03
mood
Publicité
Posté le 19-04-2006 à 11:33:52  profilanswer
 

n°1349467
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2006 à 11:36:46  profilanswer
 

nargy a écrit :

onbeforeunload ne fonctionne pas comme tu le décrit avec FF.
il s'active quand je ferme la page, pas quand je cliques.


 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
  4. <head>
  5.   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  6.   <title>Test</title>
  7.   <script type="text/javascript">
  8.   function test(){
  9.     alert('pouet');
  10.   }
  11.   </script>
  12.   <style type="text/css"></style>
  13. </head>
  14. <body onbeforeunload='return test()'>
  15. <a href="http://www.google.com">google</a>
  16. </body>
  17. </html>


;)
 
Tu peux même t'amuser à mettre des return false ( mais FF affice un confirm pour valider que tu souhaites bien rester sur la page)

n°1349476
nargy
Posté le 19-04-2006 à 11:41:27  profilanswer
 

ouais, désolé je me suis fait abusé par un site que j'ai trouvé au pif sur le net.
je ne connaissai pas onbeforeunload, je voulais tester. il n'est pas renseigné par w3c.

n°1349482
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 19-04-2006 à 11:42:51  profilanswer
 

nargy a écrit :

onbeforeunload ne fonctionne pas comme tu le décrit avec FF.
il s'active quand je ferme la page, pas quand je clique.
errata: je clique mal.


Ca marchait bien, mais ça m'empêche de valider mon site, du coup si j'ai pas le petit icone vert en bas de Firefox, je me dis à chaque fois qu'il y a une merde dans la compo de ma page. :D
 

nargy a écrit :

Code :
  1. <script language="JavaScript" type="text/javascript">
  2.     <!--
  3.     function modif_liens()
  4.     {
  5.      for(i=0;i<documents.links.length;i++)
  6.        document.links[i].onclick='return affwait()';
  7.      for(i=0;i<documents.forms.length;i++)
  8.        document.forms[i].onsubmit='return affwait()';
  9.     }
  10.     document.onload='modif_liens()';
  11.     -->
  12.     </script>


PS: affwait() retourne true.


ça marche pas, j'ai bien corrigé les s que tu avais dut rajouté pour me piéger petit canaillou :D, mais il ne se passe rien. Pourtant, j'ai bien essayé de piger pour pas faire un bête copier/coller, ça m'avait l'air logique.  [:at war with emo]


Message édité par The-Shadow le 19-04-2006 à 11:44:06
n°1349496
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 19-04-2006 à 11:48:46  profilanswer
 

Bon vous embêtez pas plus, je vais utiliser "onbeforeunload ", par contre, je note quand même la solution de Nargy, à étudier.

n°1349506
anapajari
s/travail/glanding on hfr/gs;
Posté le 19-04-2006 à 11:54:35  profilanswer
 

nargy a écrit :

ouais, désolé je me suis fait abusé par un site que j'ai trouvé au pif sur le net.
je ne connaissai pas onbeforeunload, je voulais tester. il n'est pas renseigné par w3c.


Non c'est vrai, il ne fait pas parti des evenements "standards"... A la base c'était du IE pur mais FF l'a implémenté aussi depuis quelques temps ( ce qui est logique vu que c'est quand même pratique, comme ils avaient déjà fait pour innerHTML)
 

n°1349529
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 19-04-2006 à 12:08:55  profilanswer
 

Fonctionne aussi sous Safari mais pas sous Opera 8.54

n°1349555
nargy
Posté le 19-04-2006 à 12:42:40  profilanswer
 

Cette fois ça fonctionne:

Code :
  1. <script language="JavaScript" type="text/javascript">
  2. <!--
  3. function affwait()
  4. {
  5.   alert('bye');
  6.   return true;
  7. }
  8. function modif_liens()
  9. {
  10.   var i=document.links.length;
  11.   while (i--) document.links[i].onclick=affwait;
  12.   i=document.forms.length;
  13.   while (i--) document.forms[i].onsubmit=affwait;
  14. }
  15. window.onload=modif_liens;
  16. -->
  17. </script>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Comment modifier tous les href d'une page sans les modifier...

 

Sujets relatifs
Question simple de mise en page (newb)Lancer une page php dans une autre page php
comment modifier ou créer ce genre de programme?batch: pb pour modifier fichier et ecrire dans un fichier
comment faire macro pour exporter une page excel dans un document wordPage décalle
Controler une page depuis une autreAutoriser d'afficher la page que pour ceux venant d'une page définie
Site php avec page deja generee a lavance 
Plus de sujets relatifs à : Comment modifier tous les href d'une page sans les modifier...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR