Client-seitiges Scripting, das mit HTML und XHTML zusammen benutzt wird
Die Technik bezieht sich auf:
Der Zweck dieser Technik ist es, Benutzern zu erlauben zu entscheiden, ob zusätzliche Information zum dem Linktext hinzugefügt werden sollen, so dass die Links auch außerhalb des Kontextes verständlich sind.
Einige Benutzer ziehen es vor, Links zu haben, die autark sind und wo es nicht nötig ist, den Kontext des Links zu erkunden. Andere Benutzer finden, dass das Aufnehmen der Kontextinformationen in jeden Link eine ständige Wiederholung ist und dass es ihre Fähigkeit, eine Site zu benutzen, verringert. Die Benutzer von assistierenden Techniken waren bei ihren Rückmeldungen an die Arbeitsgruppe dazu, was vorzuziehen ist, geteilter Meinung. Diese Technik erlaubt es Benutzern, die Methode zu nehmen, die für sie am besten funktioniert.
Es gibt einen Link nahe am Beginn der Seite, der den Linktext der Links auf der Seite erweitert, so dass kein zusätzlicher Kontext notwendig ist, um den Zweck eines jeden Links zu verstehen. Es muss immer möglich sein, den Zweck des Links zur Erweiterung direkt durch dessen Linktext zu verstehen.
Diese Technik erweitert die Links nur auf der aktuellen Seitenansicht. Es ist auch möglich und wäre in manchen Fällen ratsam, diese Einstellung in einem Cookie oder einem server-seitigen Benutzerprofil zu speichern, so dass Benutzer diese Auswahl nur einmal pro Site treffen müssten.
Dieses Beispiel benutzt Javascript, um Kontextinformationen direkt zu dem Text eines Links hinzuzufügen. Die Link-Klasse wird benutzt um festzulegen, welcher zusätzlicher Text hinzugefügt werden soll. Wenn der Link „Links erweitern“ („Expand Links“) aktiviert wird, wird jeder Link auf der Seite getestet um zu sehen, ob zusätzlicher Text hinzugefügt werden sollte.
Code-Beispiel:
...
<script type="text/javascript">
var expanded = false;
var linkContext = {
"hist":" version of The History of the Web",
"cook":" version of Cooking for Nerds"
};
function doExpand() {
var links = document.links;
for each (link in links) {
var cn = link.className;
if (linkContext[cn]) {
span = link.appendChild(document.createElement("span"));
span.setAttribute("class", "linkexpansion");
span.appendChild(document.createTextNode(linkContext[cn]));
}
}
objUpdate = document.getElementById('expand');
if (objUpdate)
{
objUpdate.childNodes[0].nodeValue = "Collapse links";
}
expanded = true;
}
function doCollapse() {
objUpdate = document.getElementById('expand');
var spans = document.getElementsByTagName("span");
var span;
// go backwards through the set as removing from the front changes indices
// and messes up the process
for (i = spans.length - 1; i >= 0; i--) {
span = spans[i];
if (span.getAttribute("class") == "linkexpansion")
span.parentNode.removeChild(span);
}
if (objUpdate)
{
objUpdate.childNodes[0].nodeValue = "Expand links";
}
expanded = false;
}
function toggle() {
if (expanded) doCollapse();
else doExpand();
}
</script>
...
<h1>Books for download</h1>
<p><button id="expand" onclick="toggle();">Expand Links</button></p>
<ul>
<li>The History of the Web: <a href="history.docx" class="hist">Word</a>, <a href="history.pdf" class="hist">PDF</a>, <a href="history.html" class="hist">HTML</a> </li>
<li>Cooking for Nerds: <a href="history.docx" class="cook">Word</a>, <a href="history.pdf" class="cook">PDF</a>, <a href="history.html" class="cook">HTML</a> </li>
</ul>
...
Hier ist ein funktionierendes Beispiel dieses Codes:: Providing link expansions on demand (Bereitstellung von Link-Erweiterungen auf Anfrage).
Prüfen Sie, ob es nahe dem Beginn der Seite einen Link zur Erweiterung von Links gibt
Prüfen Sie, ob der in Schritt 1 ermittelte Link durch den Linktext alleine identifiziert werden kann
Finden Sie alle Links auf der Seite, die nicht vom Linktext alleine identifiziert werden können
Aktivieren Sie das in Schritt 1 ermittelte Steuerelement
Prüfen Sie, ob der Zweck der in Schritt 3 identifizierten Links nun aus dem Linktext alleine bestimmt werden kann
Tests #1, #2 und #5 sind wahr.
Wenn dies eine ausreichende Technik für ein Erfolgskriterium ist, dann bedeutet das Scheitern an diesem Testverfahren nicht zwangsläufig, dass das Erfolgskriterium nicht auf irgendeine andere Art und Weise erfüllt wurde, sondern nur, diese Technik nicht erfolgreich implementiert wurde und nicht benutzt werden kann, um die Konformität zu erklären.