2012-04-19 71 views

回答

0

在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

1

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> 

请比这更成熟。