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

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par HawkEye, 12 Novembre 2009.

  1. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 858
    J'aime reçus:
    5
    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 !
     
  2. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    Pourquoi en Ajax et pas en php ?
     
  3. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 969
    J'aime reçus:
    121
    Parce que les ancres étant gérées au niveau du navigateur, elles ne sont pas (à ma connaissance) récupérables en PHP.

    @HawkEye : il y a ce plugin prototype qui permet des interactions avec les ancres : http://www.forgeniuses.com/2007/11/05/ajax-anchor-component-for-prototype/

    Ceci dit, je suis franchement pas convaincu, vu ce que tu cherches a priori à faire, que tu as besoin d'Ajax. L'utilisation de JS suffirait il me semble.
     
  4. 5_legs
    5_legs WRInaute passionné
    Inscrit:
    30 Avril 2006
    Messages:
    1 521
    J'aime reçus:
    0
    Effectivement, j'avais compris "au chargement de la page"...
     
  5. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 858
    J'aime reçus:
    5
    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>
    
     
  6. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 969
    J'aime reçus:
    121
    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.
     
  7. HawkEye
    HawkEye WRInaute accro
    Inscrit:
    23 Février 2004
    Messages:
    13 858
    J'aime reçus:
    5
    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 ?
     
  8. screuscreu
    screuscreu WRInaute impliqué
    Inscrit:
    14 Janvier 2008
    Messages:
    687
    J'aime reçus:
    0
    sur ton lien : onclick="forceshow();"
     
Chargement...
Similar Threads - AJAX identifier ancre Forum Date
Sites de scripts PHP, jQuery, Ajax, etc. Le café de WebRankInfo 20 Mars 2022
Conflit jquery ajax Développement d'un site Web ou d'une appli mobile 10 Février 2022
Problème avec un menu en ajax via jquery Problèmes de référencement spécifiques à vos sites 6 Février 2022
Afficher les produits suivants en ajax Développement d'un site Web ou d'une appli mobile 12 Mai 2020
Requête Ajax avec code source visible Développement d'un site Web ou d'une appli mobile 14 Mars 2020
JS Ajax PHP e-MAIL Développement d'un site Web ou d'une appli mobile 17 Juin 2019
Comment stopper l'exécution de script ajax Développement d'un site Web ou d'une appli mobile 21 Avril 2019
Ajax et duplicate content (Single Page Application) Crawl et indexation Google, sitemaps 1 Mars 2019
Supprimer ajax d'une petite fonction JS Développement d'un site Web ou d'une appli mobile 29 Novembre 2018
Google ne reconnaît pas Ajax !? Référencement Google 30 Août 2018
AJAX BESOIN D'AIDE Développement d'un site Web ou d'une appli mobile 2 Juin 2018
Indexation et ranking de sites en AJAX Référencement Google 28 Mars 2018
Fonction Ajax qui bug parfois Développement d'un site Web ou d'une appli mobile 11 Mars 2018
Stopper execution $.ajax() après un clic Développement d'un site Web ou d'une appli mobile 5 Mars 2017
Une question à propos d'Ajax Développement d'un site Web ou d'une appli mobile 27 Octobre 2016
Impossible de supprimer anciennes pages en ajax + duplicate content Crawl et indexation Google, sitemaps 7 Juin 2016
Upload via Ajax et limitation post_max_size (php.ini) Développement d'un site Web ou d'une appli mobile 11 Février 2016
Crawl AJAX - galère, galère Crawl et indexation Google, sitemaps 21 Décembre 2015
Référencement Google AJAX, AngularJS, PhantomJS Crawl et indexation Google, sitemaps 30 Mars 2015
Référencement AJAX / Duplicate content à cause des paramètres "GET" de l'URL ? Débuter en référencement 13 Mars 2015