ReferenceError:在Safari中找不到变量:ValidatorEnable

Dav*_*man 2 javascript asp.net safari validation resources

我正在开发一个ASP.NET应用程序,其中包含JavaScript以动态启用或禁用页面上的验证程序.在ASP.NET中,随应用程序提供了一个Web资源,其中包含用于此目的的JavaScript函数,例如ValidatorEnable().当我在Mac上的Safari上运行我们的应用程序时,我收到的错误是找不到ValidatorEnable.这是我们在jQuery(document).ready()回调函数中调用的函数,因此期望此时所有资源都可用.在调试器中检查显示资源从未传递到客户端浏览器.

以前有人见过这样的东西吗?Windows上的IE,Chrome或Firefox上不会出现此问题,Mac上的Chrome或Firefox也不会出现此问题.Safari似乎是未正确接收或处理ASP.NET JavaScript验证器功能的Safari.

提前致谢!

小智 5

我发布了一篇关于ASP.NET 2.0浏览器识别功能的博客文章.基本上,从7.1开始,chrome的浏览器版本字符串中存在冲突.Asp.Net认为您运行的旧版Safari浏览器不支持最近的JavaScript.通过更改<browserCaps>web.config 的元素,您可以匹配较新的版本并分配正确的功能.

<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>
Run Code Online (Sandbox Code Playgroud)

还有其他修复方法.