我正在为现有应用程序进行第 508 节合规性工作。
现在,当我使用http://achecker.ca/checker/index.php测试我的页面的第 508 节时,它显示“脚本必须有一个 noscript 节”。用于 Ajax 生成的脚本。
如何让 Ajax 工具包在客户端生成脚本后附加 noscript 标记。
我正在为现有应用程序进行第 508 节合规性工作。
现在,当我使用http://achecker.ca/checker/index.php测试我的页面的第 508 节时,它显示“脚本必须有一个 noscript 节”。用于 Ajax 生成的脚本。
如何让 Ajax 工具包在客户端生成脚本后附加 noscript 标记。
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 我添加了下面的事件,它就像一个魅力
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);
}
}
公共 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进行测试的人