31 votes

IE10 SCRIPT5009: '__doPostBack' n'est pas défini

Je suis confronté à un problème sur IE10 avec ASP.NET les contrôles qui nécessite l'activation de JavaScript post de retour[comme, bouton de lien].

Il est bien de travailler sur la version IE9 ainsi que sur IE10 mode de Compatibilité. Mais sur le IE10 mode standard, c'est de donner d'erreur ci-dessous. SCRIPT5009: '__doPostBack " n'est pas défini

[J'ai créé un projet de démonstration avec un simple asp:bouton de lien qui redirige vers une autre page.] IE10_error screen

Essayé la solution, mais ne fonctionne pas pour moi

Quelqu'un peut-il suggérer pour résoudre ce problème?

50voto

Hady Points 1145

Apparemment, il y a un bug dans les fichiers de définition de navigateur fourni avec .NET 2.0 et .NET 4. Les fichiers de définition de ne pas répondre pour IE10 comme la version du navigateur et donc par défaut une définition par défaut qui ne prend pas en charge JavaScript.

Scott, Hanselman a un très description détaillée sur cette question ici: http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

Scott propose deux solutions, la première étant celle qui est recommandée:

1. L'échelle de l'ordinateur fix Télécharger et installer un correctif sur le serveur:

2. Site uniquement à fixer Installer l' App_BrowsersUpdate paquet de NuGet dans votre site web pour importer de nouvelles ie et firefox navigateur définitions.

1voto

bef Points 11

Si vous avez essayé le correctif et que l'erreur est toujours visible dans IE11, la mise à jour du framework .net vers la version 4.5 fonctionnerait.

0voto

Rohan Points 1

IE 10 a des problèmes:

Il ne peut pas reconnaître les liens avec _doPostBack [qui sont essentiellement visibles dans la sortie HTML du bouton de lien ASP]

Vous pouvez vous référer au lien suivant pour le correctif:

http://ronniediaz.com/2013/02/07/ie10-imagebutton-_dopostback-undefined-bug-with-update-panel-script-manager/

0voto

user3283145 Points 19

Essentiellement ce qui se passe est qu'il y a 2 html manquant d'éléments cachés "eventtarget" et "eventargument", ainsi que d'un manque de la fonction "__doPostBack".

Ces sont manquants dans les DOM.

J'ai essayé tous les correctifs répertoriés pour cela, et aucun n'a fonctionné. Toutefois, l'utilisation d'une combinaison de jquery et javascript il y a une solution discrète. Ajoutez ceci à votre javascript sur le document prêt et que vous êtes hors de la course (C'est une alternative plus rapide que l'installation de l' .net framework 4.5 sur votre serveur, si bien que vous pouvez installer 4.5 c'est la voie à suivre):

if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) {
  $('#YOUR_ASPNET_FORMID').prepend('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />');
}

if (typeof __doPostBack == 'undefined') {
  __doPostBack = function (eventTarget, eventArgument) { object
    var theForm = document.forms['YOUR_ASPNET_FORMID'];
    if (!theForm) {
      theForm = document.YOUR_ASPNET_FORMID;
    }
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
      theForm.__EVENTTARGET.value = eventTarget;
      theForm.__EVENTARGUMENT.value = eventArgument;
      theForm.submit();
    }
  };
}

Je comprends que certains de dit d'installer 4.5 corrige ce. Je n'hésiterais pas à recommander. Toutefois, si vous êtes comme moi travailler sur une entreprise site internet avec un cms système de cuites dans .net 4, ce pourrait bien être une solution plus facile, par opposition à éventuellement d'introduire de nouveaux bogues créé à partir de la mise à jour de votre plate-forme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X