栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

iOS 8 / Safari 8无法与ASP.NET AJAX扩展一起使用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

iOS 8 / Safari 8无法与ASP.NET AJAX扩展一起使用

注意此解决方案仅适用于.NET版本 <4.0

所以这是…

适用的UA: Mozilla / 5.0(Windows NT 6.2; WOW64)AppleWebKit /
537.36(KHTML,例如Gecko)Chrome / 29.0.1547.57 Safari / 537.36

UA 无法 正常工作: Mozilla / 5.0(Macintosh; Intel Mac OS X 10_9_5)AppleWebKit /
600.1.17(KHTML,例如Gecko)版本/7.1 Safari / 537.85.10

问题出在主要版本更改为AppleWebKit / 600上。ASP.NET AJAX无法正确识别新的Safari 8浏览器(也适用于iOS
8)。它认为不支持部分渲染。我在“ PageRequestManager.cs”的这些行中找到了它:

bool supportsPartialRendering = (browser.W3CDomVersion >= MinimumW3CDomVersion) && (browser.EcmascriptVersion >= MinimumEcmascriptVersion) && browser.SupportsCallback;

MinimumEcmascriptVersion / MinimumW3CDomVersion都是1. Request.Browser给我以下结果:

W3CDomVersion = 1.0EcmascriptVersion = 1.0SupportsCallback = false

即使“ EcmascriptVersion”具有一个奇怪的值,问题也主要是由SupportsCallback beeing false引起的。

该错误位于ASP.NET附带的“ mozilla.browser”文件中(位于“ C: Windows Microsoft.NET”中的某个位置):

<browser id="Safari60" parentID="Safari">  <identification>    <capability name="appleWebTechnologyVersion" match="60" /></identification><capture></capture><capabilities>  <capability name="ecmascriptversion"       value="1.0" />  </capabilities></browser><browser id="Safari85" parentID="Safari">  <identification>    <capability name="appleWebTechnologyVersion" match="85" />  </identification>  <capture>  </capture>  <capabilities>    <capability name="ecmascriptversion"       value="1.4" />  </capabilities></browser><browser id="Safari1Plus" parentID="Safari">  <identification>    <capability name="appleWebTechnologyVersion" match="ddd" />  </identification>  <capture>  </capture>  <capabilities>    <capability name="ecmascriptversion"       value="1.4" />    <capability name="w3cdomversion"value="1.0" />    <capability name="supportsCallback"        value="true" />  </capabilities></browser>

所有比“ Safari 85”都要新的东西都应该被最后的定义所抓住。但是由于正则表达式混乱,“ Safari 600”被错误地检测为“ Safari60”:

<capability name="appleWebTechnologyVersion" match="60" />

本来应该

<capability name="appleWebTechnologyVersion" match="60$" />

我通过将自定义文件“ App_Browsers safari.browser”添加到我的应用程序来解决此问题,该文件包含以下内容:

<browsers>  <browser id="Safari60_bugfix" parentID="Safari60">    <identification>      <capability name="appleWebTechnologyVersion" match="^d{3,}$" />  <!-- At least 3 digits -->    </identification>    <capabilities>      <!-- Same as in "Safari1Plus" -->      <capability name="ecmascriptversion" value="1.4" />      <capability name="w3cdomversion" value="1.0" />      <capability name="supportsCallback" value="true" />     </capabilities>  </browser>  <browser id="Safari85_bugfix" parentID="Safari85">    <identification>      <capability name="appleWebTechnologyVersion" match="^d{3,}$" />  <!-- At least 3 digits -->    </identification>    <capabilities>      <!-- Same as in "Safari1Plus" -->      <capability name="ecmascriptversion" value="1.4" />      <capability name="w3cdomversion" value="1.0" />      <capability name="supportsCallback" value="true" />    </capabilities>  </browser></browsers>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号