2012-04-19 4 views
0

기존 애플리케이션의 섹션 508 준수를 위해 노력하고 있습니다.Ajaxtoolkit의 접근성 문제

이제 http://achecker.ca/checker/index.php을 사용하여 섹션 508에 대한 내 페이지를 테스트하면 "스크립트에는 noscript 섹션이 있어야합니다."라는 메시지가 표시됩니다. Ajax에서 생성 한 스크립트.

클라이언트 측에서 스크립트를 생성 한 후 Ajax 툴킷에 noscript 태그가 추가되도록하는 방법.

답변

0

내가 이벤트 아래에 추가하고 그것이 마치 마법처럼 일했다

무효 Application_PostReleaseRequestState (개체 보낸 사람, EventArgs입니다 전자)

{ 
    //add no script tag for 508 compatibility    
    if(Response.ContentType == "text/html") 
    { 
     //add no script tag for 508 compatibility 
     Response.Filter = new NoScriptTagAppendFilter(Response.Filter); 
    }   
} 

공공 NoScriptTagAppendFilter (스트림 스트림)

{ 
    outputStream = stream; 
} 

public override void Write(byte[] buffer, int offset, int count) 
{ 
    //base.Write(buffer, offset, count); 
    string data = UTF8Encoding.UTF8.GetString(buffer); 
    data = Regex.Replace(data, "</script>", "</script><noscript></noscript>"); 
    outputStream.Write(UTF8Encoding.UTF8.GetBytes(data), offset, UTF8Encoding.UTF8.GetByteCount(data)); 
    data = null; 
} 

이것은 Ajax & 테스트에 의해 생성 된 스크립트에 대해 508 호환성을 원하는 미래의 사용자에게 분명 도움이 될 것입니다. 사용 중 http://achecker.ca/checker/index.php

1

noscript 태그는 사용자가 비활성화 한 경우와 같이 스크립트의 대안을 표시하는 데 사용됩니다. 그래서 당신은있는 경우 :

<script type="text/javascript"> 
<!-- 
var currentTime = new Date() 
var month = currentTime.getMonth() + 1 
var day = currentTime.getDate() 
var year = currentTime.getFullYear() 
document.write(month + "/" + day + "/" + year) 
//--> 
</script> 

당신이 바로 코드 블록 후 또는 전부 페이지에 <noscript>이있는 경우 검사가보고되고있다. 더 큰 AJAX 기반 앱의 경우 <noscript><body> 직전에 나타납니다. 당신이 말하는/말한 것에 대해 훌륭한 판단력을 사용하는지 확인하십시오. 개발자가 다음과 같이 보았습니다.

<script type="text/javascript"> 
<!-- 
var currentTime = new Date() 
var month = currentTime.getMonth() + 1 
var day = currentTime.getDate() 
var year = currentTime.getFullYear() 
document.write(month + "/" + day + "/" + year) 
//--> 
</script> 
<noscript> 
<p>Wow, you suck because you disabled javascript.</p> 
</noscript> 

더 성숙하십시오.

의 Global.asax에서