我正在致力于现有应用程序的508条款合规性。Ajaxtoolkit的可访问性问题
现在,当我使用http://achecker.ca/checker/index.php来测试我的页面为Section 508时,它显示“脚本必须有一个noscript节”。为Ajax生成的脚本。
如何让Ajax工具包在客户端生成脚本后添加noscript标签。
我正在致力于现有应用程序的508条款合规性。Ajaxtoolkit的可访问性问题
现在,当我使用http://achecker.ca/checker/index.php来测试我的页面为Section 508时,它显示“脚本必须有一个noscript节”。为Ajax生成的脚本。
如何让Ajax工具包在客户端生成脚本后添加noscript标签。
在Global.asax中我已经加入以下事件和它的工作就像一个魅力
空隙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
A 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>
请比这更成熟。