Puschel: <a href und onClick

Hi,

bei Klick auf ein Wort möchte ich mit Ajax das passende Kapitel holen und anzeigen. Das klappt.

Wenn aber Javascript abgeschaltet ist, möchte ich stattdessen die Seite neu laden mit diesem Kapitel.

Habe dieses versucht:

function zeigeTyp( TYP, typ_name )  
{  
  if ( document.getElementById('typ_name') ) document.getElementById('typ_name').innerHTML = typ_name;  
  return false;  
}  

~~~`<span class=click onClick="zeigeTyp(46,'Stadtplanung, Architektur');getNewContent( 'http://example.com/?TYP=46', 'ajax_ziel' );"><a href=''>Stadtplanung, Architektur</a></span>`{:.language-html}  
  
Mit dem Ergebnis, dass zwar zuerst die Javascript- Funktion durchlaufen wird, aber dann die Seite neu aufgebaut wird.  
  
Wie kann ich den Klick unterdrücken? Mit return=false geht's nicht.  
  
Viele Grüße, Puschel
  1. Moin,

    Habe dieses versucht:

    function zeigeTyp( TYP, typ_name )

    {
      if ( document.getElementById('typ_name') ) document.getElementById('typ_name').innerHTML = typ_name;
      return false;
    }

    
    >   
    > Mit dem Ergebnis, dass zwar zuerst die Javascript- Funktion durchlaufen wird, aber dann die Seite neu aufgebaut wird.  
    >   
      
    Klar, vom Layout her werden <span> und <a> ziemlich identisch sein, daher wird zuerst das onclick event des <span> feuern und danach auch noch der Link aufgerufen.  
      
    
    > Wie kann ich den Klick unterdrücken? Mit return=false geht's nicht.  
    >   
      
    Vergiss das <span>, gib den onclick dem Link (der als href die Adresse für ohne JavaScript hat) und dann sollte es auch mit dem return false; (ohne "="!) klappen.  
      
    
    > Viele Grüße, Puschel  
    
    Gruß,  
    Take
    
    1. Hi,

      Klar, vom Layout her werden <span> und <a> ziemlich identisch sein, daher wird zuerst das onclick event des <span> feuern und danach auch noch der Link aufgerufen.

      das Layout ist zu exakt 0% relevant. Es geht hier ums Event-Bubbling, welches die Reihenfolge der Aktionen bestimmt. Ein 'return false' im onclick-Eventhandler des <span>-Objekts wird hierbei die eigentliche Klickaktion unterbinden, die mit dem <span>-Element verknüpft ist - mit anderen Worten: Es macht gar nichts, da ein Klick auf ein <span> normalerweise eben gar nichts tut oder tun soll.

      Vergiss das <span>, gib den onclick dem Link (der als href die Adresse für ohne JavaScript hat) und dann sollte es auch mit dem return false; (ohne "="!) klappen.

      Das ist auch semantisch sinnvoller. Es soll eine Ressource verlinkt sein, und im Falle einer bequemeren Möglichkeit soll diese genutzt werden. Ergo ist ein Link da, der mit einem sinnvollen JavaScript bestückt wird, welches den Klick abfängt und Bequemeres tut (falls der Client die entsprechenden Fähigkeiten innerhalb von JavaScript beherrscht).

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Moin,

        Hi,

        Klar, vom Layout her werden <span> und <a> ziemlich identisch sein, daher wird zuerst das onclick event des <span> feuern und danach auch noch der Link aufgerufen.

        das Layout ist zu exakt 0% relevant. Es geht hier ums Event-Bubbling, welches die Reihenfolge der Aktionen bestimmt. Ein 'return false' im onclick-Eventhandler des <span>-Objekts wird hierbei die eigentliche Klickaktion unterbinden, die mit dem <span>-Element verknüpft ist - mit anderen Worten: Es macht gar nichts, da ein Klick auf ein <span> normalerweise eben gar nichts tut oder tun soll.

        So, wieder was dazugelernt, bisher hieß für mich ein onclick-Handler immer, wenn an der Stelle, wo dieses Element ist, geklickt wird, wird gefeuert. Event-Bubbling hab ich noch nie gehört :schäm:
        Naja, JS war noch nie mein Lieblingsgebiet.

        @Puschel: Sorry für die Falschinformation.

        Cheatah

        Gruß,
        Take

  2. Hi,

    Hallo

    bei Klick auf ein Wort möchte ich mit Ajax das passende Kapitel holen und anzeigen. Das klappt.

    Wenn aber Javascript abgeschaltet ist, möchte ich stattdessen die Seite neu laden mit diesem Kapitel.

    [...]

    Wie kann ich den Klick unterdrücken? Mit return=false geht's nicht.

    Probier doch mal Folgendes: der Link bekommt als Ziel die URL für die nicht-Script-Variante. Dann packst du Javascript-Code ins onload-Ereignis von <body>, oder in einem <script>-Bereich außerhalb jeder Funktion - so halt, dass es beim Laden der Seite ausgeführt wird. Dieser Code ändert dann einfach für deinen Verweis das .href-Attribut auf die Javascript-Funktion, die den AJAX-Kram besorgt.
    Vielleicht hilft es dir ja :-)

    Viele Grüße, Puschel

    Gruß zurück vom randschaefer