我正在开发一个 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 验证器函数。
提前致谢!
最佳答案
我发布了blog post关于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>
关于javascript - 引用错误: Can't find variable: ValidatorEnable in Safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224314/