J'ai construit un site web pour un client en asp.net 4 qui utilise assez largement jQuery (1.7.2). Le site fonctionne bien dans tous les navigateurs modernes, les clients mobiles, etc.
Le client a un compte Twitter pour son entreprise. Lorsque quelqu'un le suit, il reçoit un message de réponse automatique contenant un lien vers le site. Il a soulevé un problème : lorsque les clients cliquent sur ce lien en utilisant l'application Twitter sur un appareil iOS, le site ne fonctionne pas correctement.
J'ai cloué cela au fait que twitter utilise une webview pour afficher le site et non safari et il semble que dans cette webview il y a une sorte d'erreur quand j'essaie d'obtenir l'instance asp.net scriptmanager via javascript et donc le document ne devient jamais prêt donc plus d'événements jQuery document.ready fire ! Si je mets des scripts ultérieurs en window.load
alors ils fonctionnent bien.
J'ai créé une page très simple pour tester cela qui, dans son intégralité, ressemble à ceci :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<script type="text/javascript">
$(document).ready(function () {
if (typeof (Sys) === "object") {
var manager = Sys.WebForms.PageRequestManager.getInstance();
}
});
$(document).ready(function () {
alert("staging1");
});
$(window).load(function () {
alert("staging2");
});
</script>
</form>
</body>
</html>
Ainsi, si je charge cette page dans le webview, je n'obtiens la deuxième alerte qu'à partir de window.load. Si j'enlève la ligne qui déclare la variable manager
. Je reçois les deux alertes lorsque le deuxième événement document.ready se déclenche.
Si je lance la page dans n'importe quel navigateur, je reçois toujours les deux alertes.
Quelqu'un a-t-il rencontré ce problème ou a-t-il une raison pour laquelle cela ne fonctionnerait pas ?
Toute aide/expertise est la bienvenue !
Gracias