Techniken, die ein skript-gesteuertes Scrollen des Inhalts unterstützen.
Die Technik bezieht sich auf:
Das Ziel dieser Technik ist es, Benutzern eines Möglichkeit zu geben, scrollende Inhalte anzuhalten, wenn das Scrollen von einem Skript erstellt wird. Scrollende Inhalte können für Benutzer mit geringem Sehvermögen oder kognitiven Behinderungen schwer oder unmöglich zu lesen sein. Die Bewegung kann auch einige Menschen ablenken, was es schwierig für sie macht, sich auf andere Teile der Webseite zu konzentrieren.
In diesem Beispiel werden CSS und Javascript benutzt, um einen Teil des Textes visuell in einem scrollenden Format darzustellen. Es wurde ein Link eingearbeitet, um die scrollende Bewegung anzuhalten.
Diese Implementierung zeigt den gesamten Text an und lässt den Link weg, wenn Javascript oder CSS nicht unterstützt werden oder inaktiv sind.
Der folgende Code ist eine berichtigte Version des webSemantic's Accessible Scroller (Stand Juli 2008).
Die XHTML-Komponente:
Code-Beispiel:
...
<div id="scroller">
<p id="tag">This text will scroll and a Pause/Scroll link will be present
when Javascript and CSS are supported and active.</p>
</div>
...
Die CSS-Komponente :
Code-Beispiel:
...
body {font:1em verdana,sans-serif; color:#000; margin:0}
/* position:relative and overflow:hidden are required */
#scroller { position:relative; overflow:hidden; width:15em; border:1px solid #008080; }
/* add formatting for the scrolling text */
#tag { margin:2px 0; }
/* #testP must also contain all text-sizing properties of #tag */
#testP { visibility:hidden; position:absolute; white-space:nowrap; }
/* used as a page top marker and to limit width */
#top { width:350px; margin:auto; }
...
Die JavaScript-Komponente:
Code-Beispiel:
var speed=50 // speed of scroller
var step=3 // smoothness of movement
var StartActionText= "Scroll" // Text for start link
var StopActionText = "Pause" // Text for stop link
var x, scroll, divW, sText=""
function onclickIE(idAttr,handler,call){
if ((document.all)&&(document.getElementById)){idAttr[handler]="Javascript:"+call}
}
function addLink(id,call,txt){
var e=document.createElement('a')
e.setAttribute('href',call)
var linktext=document.createTextNode(txt)
e.appendChild(linktext)
document.getElementById(id).appendChild(e)
}
function getElementStyle() {
var elem = document.getElementById('scroller');
if (elem.currentStyle) {
return elem.currentStyle.overflow;
} else if (window.getComputedStyle) {
var compStyle = window.getComputedStyle(elem, '');
return compStyle.getPropertyValue("overflow");
}
return "";
}
function addControls(){
// test for CSS support first
// test for the overlow property value set in style element or external file
if (getElementStyle()=="hidden") {
var f=document.createElement('div');
f.setAttribute('id','controls');
document.getElementById('scroller').parentNode.appendChild(f);
addLink('controls','Javascript:clickAction(0)',StopActionText);
onclickIE(document.getElementById('controls').childNodes[0],"href",'clickAction(0)');
document.getElementById('controls').style.display='block';
}
}
function stopScroller(){clearTimeout(scroll)}
function setAction(callvalue,txt){
var c=document.getElementById('controls')
c.childNodes[0].setAttribute('href','Javascript:clickAction('+callvalue+')')
onclickIE(document.getElementById('controls').childNodes[0],"href",'clickAction
('+callvalue+')')
c.childNodes[0].firstChild.nodeValue=txt
}
function clickAction(no){
switch(no) {
case 0:
stopScroller();
setAction(1,StartActionText);
break;
case 1:
startScroller();
setAction(0,StopActionText);
}
}
function startScroller(){
document.getElementById('tag').style.whiteSpace='nowrap'
var p=document.createElement('p')
p.id='testP'
p.style.fontSize='25%' //fix for mozilla. multiply by 4 before using
x-=step
if (document.getElementById('tag').className) p.className=document.getElementById
('tag').className
p.appendChild(document.createTextNode(sText))
document.body.appendChild(p)
pw=p.offsetWidth
document.body.removeChild(p)
if (x<(pw*4)*-1){x=divW}
document.getElementById('tag').style.left=x+'px'
scroll=setTimeout('startScroller()',speed)
}
function initScroller(){
if (document.getElementById && document.createElement && document.body.appendChild) {
addControls();
divW=document.getElementById('scroller').offsetWidth;
x=divW;
document.getElementById('tag').style.position='relative';
document.getElementById('tag').style.left=divW+'px';
var ss=document.getElementById('tag').childNodes;
for (i=0;i<ss.length;i++) {sText+=ss[i].nodeValue+" "};
scroll=setTimeout('startScroller()',speed);
}
}
function addLoadEvent(func) {
if (!document.getElementById | !document.getElementsByTagName) return
var oldonload = window.onload
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload()
func()
}
}
}
addLoadEvent(initScroller)
Es gibt ein funktionierendes Beispiel dieses Codes: Example of using script to scroll content and providing a mechanism to pause it (Beispiel für die Benutzung von Script, um Inhalte zu scrollen und Bereitstellung eines Mechanismus, um dies anzuhalten).
Ressourcen sind nur zu Informationszwecken und keine offizielle Empfehlung.
Prüfen Sie, ob ein Mechanismus zum Anhalten des scrollenden Inhalts zur Verfügung stehr.
Benutzen Sie den Anhalt-Mechanismus, um den scrollenden Inhalt anzuhalten.
Prüfen Sie, ob das Scrollen aufgehört hat und auch nicht von alleine wieder anfängt.
Prüfen Sie, ob es einen Mechanismus zum erneuten Starten des angehaltenen Inhalts gibt.
Benutzern Sie den Neustart-Mechanismus, um den scrollenden Inhalt erneut zu starten.
Prüfen Sie, ob das Scrollen an dem Punkt, an dem es angehalten wurde, wieder aufgenommen wird.
Tests #3 bis #6 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.