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(ストリームstream)

{ 
    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で
関連する問題