<select>Ersatzlinks
MC Breit
- barrierefreiheit
0 Sven Rautenberg0 MC Breit
Hallo!
Ich habe mich mal gefragt, wie das eigendlich ist, wenn man für ein <select>(dropdown menü) ersatzlinks anbieten will...
wenn ich zum bsp habe:
<select ...>
<option select="selected">Seite 1</option>
<option>Seite 2</option>
<option>Seite 3</option>
</select>
kann ich dan folgendes für die ersatzdarsetellung machen?
<select ...>
<option selected="selected"><a href="seite1.htm">Seite 1</a></option>
<option><a href="seite2.htm">Seite 2</a></option>
<option><a href="seite3.htm">Seite 3</a></option>
</select>
währe das XHTML konform, und würde ein textbrowser das richtig darsetellen?
----
PS: könnt ihr mir einen textbrowser für MS Win empfehlen? (außer lynx)
Moin!
Ich habe mich mal gefragt, wie das eigendlich ist, wenn man für ein <select>(dropdown menü) ersatzlinks anbieten will...
Man bietet entweder im <noscript>-Bereich einen Satz Links an, die logischerweise dann nicht per select-Feld ausgewählt werden können, oder man bietet im <noscript>-Bereich einen Submit-Button für das Formular an, in dem sich das Selectfeld befindet, und sendet das Formular an ein serverseitiges Skript, welches den gewählten Value auswertet und einen Redirect an den Browser zurückschickt, damit die gewählte Seite dann auftaucht.
kann ich dan folgendes für die ersatzdarsetellung machen?
<select ...>
<option selected="selected"><a href="seite1.htm">Seite 1</a></option>
Nein, definitiv nicht.
währe das XHTML konform, und würde ein textbrowser das richtig darsetellen?
Nein. Nein.
Auch Textbrowser können ohne Probleme <select>-Felder darstellen.
PS: könnt ihr mir einen textbrowser für MS Win empfehlen? (außer lynx)
Nein. Nimm Lynx.
- Sven Rautenberg
Man bietet entweder im <noscript>-Bereich einen Satz Links...
und wie mache ich da nen no script bereich?
ich habe ja nur:
...body>
<select onSelect="javascript: ...">
</select>
</body...
Wo soll der da hinn?
Moin!
Man bietet entweder im <noscript>-Bereich einen Satz Links...
und wie mache ich da nen no script bereich?
Schau in SelfHTML.
http://selfhtml.teamone.de/html/transit/scripts.htm#noscript
- Sven Rautenberg
ja, aber <select> ist ja kein script...
dann müsste ich das ja erst kodieren, und dann als script einfügen... ???
Moin!
ja, aber <select> ist ja kein script...
dann müsste ich das ja erst kodieren, und dann als script einfügen... ???
Nö, du sollst den Submit-Button im <noscript> verstecken. <script> und <noscript> müssen keinesfalls immer 1:1 zusammen vorkommen.
- Sven Rautenberg
Hallo,
und wie mache ich da nen no script bereich?
ich habe ja nur:
...body>
<select onSelect="javascript: ...">
</select>
</body...
Das ist gleich dreifach falsch. Es fehlt ein form-Element. »onselect« ist nicht der geeignete Event. Und die Zeichenkette »javascript:« hat in on*-Event-Attributen nichts zu suchen. Du meintest den Event onchange, aber der ist auch unpassend, siehe </archiv/2003/3/40156/#m220189>. Du solltest auf onsubmit ausweichen und einen Go-Button einfügen, mit welchem der Benutzer die Eingabe bestätigen muss.
Dieses Formular soll nur erscheinen, wenn JavaScript aktiviert ist, daher musst es den entsprechenden Code komplett mit JavaScript ausgeben (Methode document.write(), http://selfhtml.teamone.de/javascript/objekte/document.htm#write). In einem noscript-Element bringst du die Alternativnavigation unter, etwa so:
<script type="text/javascript">
document.write(
'<form name="linkformular" action="" onsubmit="var liste=document.linkformular.linkliste; window.location.href=liste.options[liste.selectedIndex].value; return false;">'+
'<p>'+
'<select name="linkliste">'+
'<option value="a.html">roggenbrot</option>'+
'<option value="b.html">sesambrötchen</option>'+
'<option value="c.html">baguette</option>'+
'</select>'+
'<input type="submit" value="OK">'+
'</p>'+
'</form>'
);
</script>
<noscript>
<ul>
<li><a href="a.html">roggenbrot</a></li>
<li><a href="b.html">sesambrötchen</a></li>
<li><a href="c.html">baguette</a></li>
</ul>
</noscript>
Der Code, der beim Absenden des Formulars ausgeführt wird (onsubmit-Attribut) liest den Wert der aktuell ausgewählten Option aus und behandelt sie als URL, die angesteuert wird. Siehe http://selfhtml.teamone.de/javascript/objekte/forms.htm, http://selfhtml.teamone.de/javascript/objekte/options.htm und http://selfhtml.teamone.de/javascript/objekte/location.htm#href.
Das ist übrigens die Variante, die ohne ein serverseitiges Script auskommt. Wenn du mit einem solchen arbeiten willst, musst du das action-Attribut passend füllen (der GET-Parameter heißt dann im Beispiel »linkliste«); dann kannst du auch auf die Ausgabe über JavaScript verzichten und ein noscript-Element mit Alternativlinks brauchst du auch nicht mehr.
Mathias