我正在为现有应用程序开发Section 508合规性。
现在,当我使用http://achecker.ca/checker/index.php测试我的页面508时,它显示“脚本必须有一个noscript部分。”用于Ajax生成的脚本。
如何让Ajax工具包在客户端生成脚本后附加noscript标记。
答案 0 :(得分: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>
请比这更成熟。
答案 1 :(得分:0)
在Global.asax中,我添加了以下事件,它就像一个魅力
void Application_PostReleaseRequestState(object sender,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(Stream 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和Ajax生成的脚本的508兼容性的人。使用http://achecker.ca/checker/index.php
进行测试