Suche
Details

Warum funktionieren einzelne JavaScript-Erweitungen nicht in den einzelnen Tabs?


Hierbei handelt es sich wahrscheinlich um JS-Funktionen, die über einen globalen Event-Handler aufgerufen werden. Hier steht also nicht an jedem Objekt ein Aufruf (onClick="..."), sondern nur beim Laden der Seite wird definiert, dass alle festgelegten Elemente auf eine bestimmte Weise reagieren sollen.

Diese globalen Event-Handler reagieren nur auf Elemente, die schon beim grundlegenden Seitenaufbau geliefert werden. Ajax (und damit auch die Contenttabs) liefern Informationen jedoch erst später über den Weg der DOM-Änderungen mit (JavaScript document.[Element].innerHTML). Globale Event-Handler greifen da nicht mehr.

Dies ist jedoch ein grundlegendes JavaScript-Problem, welches durch folgende Wege umgangen werden könnte:
  • Die Tabinhalte werden immer komplett geladen und über eine simple "display: none / display: block"-Logik sichtbar gemacht. Dies würde aber das ganze Modul über den Haufen werden und nebenbei auch einige gravierende Nachteile (z.B. SEO) mit sich bringen.

    oder

  • Die gewünschte Funktion läßt sich über einen elementbasierten Eventhandler (z.B. <a onClick="...">) aufrufen. Dann müßten diese Aufrufe in den Templates nachgetragen werden. Diese Lösung ist die Beste, sofern dies technisch umsetzbar ist.