Safari sur l'iPad, occasionnellement, ne reconnaît pas ASP.NET publication de liens

Que je vais avoir vraiment du mal à identifier la source d'un problème intermittent dans un ASP.NET application web qui s'exécute sur le navigateur Safari sur l'iPad de troisième génération en cours d'exécution iOS 6.0. Ce qui se passe est que, à l'occasion, que <a> tags mis en place comme les liens hypertexte qui ne les publications via JavaScript, soudainement cesser de travailler et ne semblent pas faire quelque chose si vous les touchez sur l'écran. Il s'agit d'un asp:LinkButton de contrôle est défini comme un lien de déconnexion, et la ligne d'en-tête d'un GridView qui est mis en place pour permettre à la ligne de tri. Il semble y avoir ni rime ni raison derrière cela - qu'ils fonctionnent à nouveau normalement pendant un certain temps, puis s'arrête, et je vais plus tard l'avis qu'ils recommencer à travailler (surtout après la fermeture de Safari et de la ré-ouverture, mais cela ne veut pas toujours l'air de fonctionner).

La déconnexion de contrôle ressemble à ceci dans le fichier aspx:

<asp:LinkButton ID="LogoutButton" onclick="LogoutButton_Click" runat="server">[ Logout ]</asp:LinkButton>

et s'affiche comme ceci dans le code HTML obtenu:

<a id="LogoutButton" href="javascript:__doPostBack(&#39;ctl00$LogoutButton&#39;,&#39;&#39;)">[ Logout ]</a>

Est-il rien de spécial à propos de Safari en cours d'exécution sur l'iPad qui pourraient les empêcher de tels liens de rompre à l'occasion, comme la trop grande quantité de données chargées sur la page ou dans les autres onglets du navigateur, ou peut-être quelque chose avec le ViewState qui agissent dans ce scénario? Même après avoir joué avec l'application web sur l'iPad pendant un certain temps, je ne peux pas trouver de moyen de reproduire le problème, je ne peux même pas commencer à essayer de corriger ce qui est vraiment frustrant, donc je suis à la recherche pour les conseils de ceux qui ont développé le ASP.NET apps et de savoir l'iPad et/ou Safari environnements vraiment bien. Je n'ai jamais eu ce problème se produit sur un navigateur de bureau.

Mise à jour: à l'Aide de l'astuce décrite sur cette page sur la façon d'ajouter un pseudo-Affichage de la Source de l'option de Safari sur l'iPad, j'ai été capable de voir la différence dans le code HTML généré d'une page où la publication des liens de travail, et une page où il est arrêté. En bref, le __doPostBack fonction JavaScript qui ASP.NET normalement inscrit dans la page... s'arrête tout simplement obtenir intégrés pour une raison quelconque. En conséquence, le JavaScript liées à la liens d'erreur. Voici ce que ASP.NET normalement ajoute à la page pour obtenir la publication des liens de travail:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

Ce qui semble être le même problème décrit sur le Apple forum de support et ici DONC. Ce dernier suggère que ASP.NET peut parfois être incapable de reconnaître Safari sur l'iPad comme JavaScript capable et n'a donc pas insérer correctement la __doPostBack fonction dans la page. D'autres JavaScript sur ma page est toujours dans un travail correct, bien que, de sorte qu'il n'est pas entièrement expliquer mon problème.

OriginalL'auteur Derek | 2012-10-09