30 Sep 2014

safari anomalie sur les dernieres versions avec Asp.net

Sur les dernières versions de safari (7.1 et 8.0), les callbacks (et aussi les ajaxcontroltoolkit), les postback via updatepanel ne fonctionnent plus.

La faute au net agent avant :

Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
Maintenant :
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/600.1.17 (KHTML, like Gecko) Version/7.1 Safari/537.85.10

Dans mozilla.browser :
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\Browsers

On voit  :


<browser id="Safari60" parentID="Safari">
<identification>
<capability name="appleWebTechnologyVersion" match="60" />
</identification>
<capabilities>
<capability name="ecmascriptversion"       value="1.0" />
</capabilities>
</browser>

<browser id="Safari85" parentID="Safari">
<identification>
<capability name="appleWebTechnologyVersion" match="85" />
</identification>
<capabilities>
<capability name="ecmascriptversion"       value="1.4" />
</capabilities>
</browser>

<browser id="Safari1Plus" parentID="Safari">
<identification>
<capability name="appleWebTechnologyVersion" match="\d\d\d" />
</identification>
<capabilities>
<capability name="ecmascriptversion"       value="1.4" />
<capability name="w3cdomversion"           value="1.0" />
<capability name="supportsCallback"        value="true" />
</capabilities>
</browser>

Pour résumer les 2 premières identifications (Safari60 et Safari85) sont de vieux navigateurs qui ne supporte pas le callback.
Pour les autres navigateurs supportsCallBack est bien positionné.

Mais au lieu d’écrire :match= “60$” il est écrit :match=”60″

Du coup asp.net estime que la derniere version safari qui est AppleWebKit/600 ne supporte pas les callbacks…

Pour corriger vous pouvez mettre dans le web.config ou directement dans le machine.config

 

<browserCaps>
<filter>
<case match="AppleWebKit/6\d\d">
EcmaScriptVersion = 1.4
w3cdomversion   =1.0
supportsCallback = true
</case>
<case match="AppleWebKit/85\d">
EcmaScriptVersion = 1.4
w3cdomversion   =1.0
supportsCallback = true
</case>
</filter>
</browserCaps>

Source :
http://stackoverflow.com/questions/25978746/ios-8-safari-8-not-working-with-asp-net-ajax-extensions

et  :
http://www.brillianceweb.com/blog/article/69/aspnet-20-misidentifies-safari-71-on-ios-and-os-x

Arcticle issu de :

http://www.thierrybehin.fr/asp-net-bug-sur-les-dernieres-version-de-safari-callback-et-ajaxcontroltoolkit/

 

Share

Comments are closed.