kick-image.at - Webdesig | CMS | Printdesign, c/o Reynhard Boegl, A - 4020 Linz, Herrenstrasse 7, Tel.: +43 (0)676 75 63 079, Web: www.kick-image.at

kick-image

High End Webdesign

Toggle- JavaScript inkl. Noscript

Client- Seitige Scripte (wie z.B. JavaScript) werden von uns nur wenn unbedingt nötig eingesetzt, warum sollte bekannt sein…

Nun kam aber unser Element “News-Abo / Netzwerke” (links unten – EDIT: Funktion wurde mittlerweile entfernt und anders aufgeteilt) dazu, mit einigen Infos zu unseren News und Network- Zugehörigkeiten. Immer anzeigen wollten wir sie nicht, also per Variable auf Klick einblenden bzw. ausblenden. Hier hat aber unser WordPress- Blog etwas dagegen gehabt – externe Variablenübergabe wird da aus Sicherheitsgründen blockiert. Also nun doch JavaScript


Sämtliche JavaScripte arbeiten bei solchen Anforderungen mit dynamischen Austausch des CSS- Attributes “display”, leider nur mit der Ausgangssituation “display:none”. Besucher mit deaktiviertem JavaScript würden also nichts sehen! Eine Lösung wollte gefunden werden – und die war wieder einmal einfacher als vermutet…

Doch mal von vorne:

Das einfachste “Ein- und Ausblenden JavaScript”:
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'none')
e.style.display = 'block';
else
e.style.display = 'none';
}

Der passende Link dazu:
<a href="javascript: toggle_visibility('abolist');" title="Bereich aufklappen">NEWS-ABO / NETZWERKE</a>

Funktioniert prächtig, setzt aber den CSS- Inline- Style “display:none;” beim betroffenen Element (hier das Element mit der ID “abolist” – ursprünglich die Liste mit den Links) voraus – bei deaktiviertem JavaScript wäre dieses Element (in unserem Fall eben die gesamte Liste (siehe Quelltext)) also NICHT sichtbar und auch nicht aufrufbar!

Grübel – grübel – wie läßt sich eine “Noscript”- Version am Einfachsten realisieren – und es war eben einfacher als vermutet: die Einführung eines eigentlich sinnfreien Elements mit der o.g. ID, in dem die eigentliche Liste eingebunden ist – per JavaScript geschrieben, inkl. “display:none”.

Beispiel unserer Anwendung (Quellcode):
<script type="text/javascript">
/* <![CDATA[ */
document.write('<div id="abolist" style="display:none;">');
/* ]]> */
</script>

Dies öffnet ein “Div”- Element, aber nur wenn JavaScript im Browser aktiviert ist – und eben mit dem verlangtem css- Attribut “display:none”.
Danach kommt der Inhalt – die eigentliche Linkliste…
Nach dieser Liste wird selbstverständlich der “Div”- Schließer benötigt – wieder per JavaScript geschrieben:
<script type="text/javascript">
/* <![CDATA[ */
document.write('</div>');
/* ]]> */
</script>

Somit bekommen User mit aktivierten JavaScript die funktionstüchtige “Toggle- Scriptversion” vorgesetzt – per Klick läßt sich der bestimmte Bereich aus- und einblenden.
Besucher mit deaktiviertem JavaScript sehen die gesamte Liste immer – ein durchaus akzeptabler, und vor allem nach w3c.org valider Kompromiss…

  • Beitrag bei facebook posten
  • Beitrag bei twitter posten
  • Diese Seite mit anderen teilen - 'Social Bookmark Dienste'

WebworktoolsMouse-Over Effekte mit CSS- Sprites

Weitere empfohlene Beiträge

Archiv / Übersicht

zur Weblog Startseite

2011

2010

2009

2008

2007

2006

Kommentar