我正在开发一个包含JavaScript的ASP.NET应用程序,以动态启用或禁用页面上的验证程序。在ASP.NET中,随应用程序提供了一个Web资源,其中包含用于此目的的JavaScript函数,例如ValidatorEnable()。当我在Mac上的Safari上运行我们的应用程序时,我收到的错误是找不到ValidatorEnable。这是我们在jQuery(document).ready()回调函数中调用的函数,因此期望此时所有资源都可用。在调试器中检查显示资源从未传递到客户端浏览器。
有没有人见过这样的东西? Windows上的IE,Chrome或Firefox上不会出现此问题,Mac上的Chrome或Firefox也不会出现此问题。 Safari似乎是没有正确接收或处理ASP.NET JavaScript验证器函数的那个。
提前致谢!
答案 0 :(得分:5)
我发布了一个关于ASP.NET 2.0浏览器识别功能的blog post。基本上,从7.1开始,chrome的浏览器版本字符串中存在冲突。 Asp.Net认为您运行的旧版Safari浏览器不支持最近的JavaScript。通过更改web.config的<browserCaps>
元素,您可以匹配较新的版本并分配正确的功能。
<configuration>
<system.web>
<browserCaps>
<filter>
<case match="AppleWebKit/600">EcmaScriptVersion = 1.5
supportsCallback = true
</case>
<case match="AppleWebKit/601">EcmaScriptVersion = 1.5
supportsCallback = true
</case>
<case match="AppleWebKit/602">EcmaScriptVersion = 1.5
supportsCallback = true
</case>
<!-- Speculative futureproofing could do this?
<case match="AppleWebKit/603">EcmaScriptVersion = 1.5
supportsCallback = true
</case>
<case match="AppleWebKit/610">EcmaScriptVersion = 1.5
supportsCallback = true
</case>
<case match="AppleWebKit/650">EcmaScriptVersion = 1.5
supportsCallback = true
</case>
-->
</filter>
</browserCaps>
</system.web>
</configuration>