Help AJAX pour identifier une ancre de page et agir en conséquence

WRInaute accro
Hello,

N'ayant aucune connaissance en la matière, je pense néanmoins qu'il est possible via AJAX de détecter la présence d'une ancre dans l'URL d'une page, et d'agir en conséquence sur le contenu généré par php...

En l'occurrence, voici ce que je voudrais faire:

Page exemple.com/dossier/article
--> un <div> est en "display: none;"

Page exemple.com/dossier/article#anchor
--> ce même <div> est en "display: block;"

Est-ce que quelqu'un aurait une idée simple et légère à mettre en place ? :oops:
Thanks !
 
WRInaute accro
Après de plus profondes recherches, effectivement, JS suffit :)

Je suis vraiment une grosse bille en JS. Voici ce que j'ai fait, au cas où quelqu'un y verrait une amélioration à apporter :)

Code:
<body onload="forceshow('init_hidden');">

(...)

<script type="text/javascript">
function forceshow(elem) {
 if(self.document.location.hash.substring(1)!="") {
  etat=document.getElementById(elem).style.display;
  if(etat=="none") { 
   document.getElementById(elem).style.display="block"; 
  }
 }
}
</script>

(...)

<div id="init_hidden" style="display:none;">TEST</div>
 
WRInaute accro
Pour optimiser ça (notamment l'appel à getElementById, le listener au load de la page, etc.), je te conseille davantage d'utiliser un framework JS, comme prototype ou jQuery. En il convient de tester l'existence d'un élément avant d'y faire appel.
 
WRInaute accro
OK mais le onload="forceshow('init_hidden');" sur <body> ne sera généré par php que si le <div> "init_hidden" a été généré auparavant.

Je vais néanmoins me rencarder un peu plus sur prototype ;)

Merci !


Le seul "souci" qui me reste, c'est dans le cas (rare mais possible) où le lien vers l'url avec une ancre provient de la page elle-même, et non d'une autre page...
En effet, dans ce cas là je pense que vu que la page n'est pas rechargée, la condition "onload" n'est pas remplie, et la fonction n'est pas exécutée.

Exemple:

Code:
<div caché><a name="test"></a>blabla</div>
(...)
<div visible><a href="#test">test</a></div>

-> est-ce qu'il existerait autrechose que onload ?
 
Discussions similaires
Haut