0

私は、既存のアプリケーションのセクション 508 コンプライアンスに取り組んでいます。

http://achecker.ca/checker/index.phpを使用してセクション 508 のページをテストすると、「スクリプトには noscript セクションが必要です」と表示されます。Ajax で生成されたスクリプト用。

クライアント側でスクリプトを生成した後、Ajax ツールキットに noscript タグを追加する方法。

4

2 に答える 2

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>

それよりも大人しくしてください。

于 2012-04-20T22:03:55.003 に答える
0

Global.asax では、以下のイベントを追加しましたが、魅力的に機能しました

void Application_PostReleaseRequestState(オブジェクト送信者, EventArgs e)

{
    //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);
    }        
}

public 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を使用したテストを希望する将来の人に間違いなく役立ちます

于 2012-05-29T08:12:20.797 に答える