web-dev-qa-db-fra.com

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

Je suis confronté à un problème sur IE10 avec les contrôles ASP.NET qui nécessite le retour de JavaScript par la poste [comme le bouton du lien]. 

Il fonctionne correctement sur la version IE9 ainsi que sur le mode de compatibilité IE10. Mais en mode standard IE10, l’erreur ci-dessous est générée . SCRIPT5009: '__doPostBack' n’est pas défini 

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

J'ai essayé la solution, mais n'a pas fonctionné pour moi

Quelqu'un peut-il suggérer une solution à ce problème?

31
CHANDRAHAS

Il existe apparemment un bogue dans les fichiers de définition de navigateur fournis avec .NET 2.0 et .NET 4. Les fichiers de définition ne traitent pas IE10 en tant que version de navigateur et sont donc définis par défaut sur une définition par défaut qui ne prend pas en charge JavaScript.

Scott Hanselman a rédigé un article très détaillé sur ce problème ici: http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

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

1. Correctif à l'échelle de l'ordinateur Téléchargez et installez un correctif sur le serveur:

2. Correction du site .__ uniquement. Installez le paquetage App_BrowsersUpdate de NuGet sur votre site Web pour importer les nouvelles définitions de navigateur ie et firefox.

50
Hady

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.

1
bef

IE 10 a des problèmes: 

Il ne peut pas reconnaître les liens avec _doPostBack [qui sont fondamentalement 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/

0
Rohan

En gros, il manque 2 éléments cachés html "eventtarget" Et "eventargument", ainsi qu'une fonction manquante "__doPostBack".

Ceux-ci sont absents du DOM.

J'ai essayé tous les correctifs énumérés pour cela et aucun n'a fonctionné. Cependant, en utilisant une combinaison de jquery et javascript, il existe une solution discrète. Ajoutez ceci à votre javascript sur le document prêt et vous partez pour la course (C'est une alternative bien plus rapide que d'installer le framework .net 4.5 sur votre serveur, bien que si vous pouvez installer la version 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) { 
    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 certaines des dites installations 4.5 corrigent cela. Je recommanderais certainement cela. Toutefois, si vous travaillez comme moi sur un site destiné au grand public avec un système cms cuit dans .net 4, il s’agit peut-être d’une solution plus simple, au lieu d’introduire de nouveaux bogues créés par la mise à jour de votre plateforme.

0
user3283145