Asp.net IE10脚本5009:&x27__doPostBack';是未定义的

Asp.net IE10脚本5009:&x27__doPostBack';是未定义的,asp.net,postback,internet-explorer-10,Asp.net,Postback,Internet Explorer 10,我在IE10上遇到了一个ASP.NET控件的问题,该控件需要JavaScript回发[like,link button] 它可以在IE9版本和IE10兼容模式下正常工作。但在IE10标准模式下,它给出了以下错误。 SCRIPT5009:“\uuuDoPostBack”未定义 [我创建了一个演示项目,其中包含一个简单的asp:link按钮,可重定向到另一个页面。] 有人能建议对此进行修复吗?在.NET 2.0和.NET 4附带的浏览器定义文件中显然有一个bug。定义文件不适合作为浏览器版本的I

我在IE10上遇到了一个ASP.NET控件的问题,该控件需要JavaScript回发[like,link button]

它可以在IE9版本和IE10兼容模式下正常工作。但在IE10标准模式下,它给出了以下错误。 SCRIPT5009:“\uuuDoPostBack”未定义

[我创建了一个演示项目,其中包含一个简单的asp:link按钮,可重定向到另一个页面。]


有人能建议对此进行修复吗?

在.NET 2.0和.NET 4附带的浏览器定义文件中显然有一个bug。定义文件不适合作为浏览器版本的IE10,因此默认为不支持JavaScript的默认定义

Scott Hanselman在这里有一篇关于这个问题的非常详细的文章:

Scott提出了两种解决方案,第一种是推荐的解决方案:

1。机器范围的修复 在服务器上下载并安装修补程序:

  • .Net 4()
  • .Net 2(,)
2。仅站点修复程序 将NuGet的
App\u BrowsersUpdate
软件包安装到您的网站中,以导入新的ie和firefox浏览器定义

  • .Net 4()
  • .Net 2()
    • IE 10存在以下问题:

      它无法识别带有_doPostBack[基本上可以在ASP链接按钮的HTML输出中看到]的链接

      有关修复程序,您可以参考以下链接:


      如果您已经尝试了修复,但仍然在IE11中看到错误,那么将.net framework更新到4.5就可以了。

      基本上是因为缺少两个html隐藏元素“eventtarget” 和“eventargument”,以及缺少的函数“doPostBack”

      DOM中缺少这些

      我尝试了列出的所有修复程序,但都没有成功。然而,使用jquery和javascript的组合有一个不引人注目的解决方案。将它添加到javascript on document ready中,您就可以开始竞赛了(这比在服务器上安装.net framework 4.5要快得多,不过如果您可以安装4.5,那就是最好的选择):


      if($('#_EVENTTARGET')。安装包的长度(仅限站点修复)-在服务器端或编译代码的机器上?修补程序需要安装在为网站服务的web服务器上-即,用您的问题来说,“服务器端”而不是“编译代码的机器”。后者只是您的开发环境。IE11?(修补程序不起作用)。Microsoft花费了我们太多的时间。是时候开始避免使用另一款MS浏览器了吗?您好。关于框架更新解决方案,请澄清一下,是否有人可以确认只需要安装FW 4.5(一个特定版本,4.5.1可以吗?)在主机上,而不是将项目本身升级到4.5?谢谢大家,这还会发生在VS2017 jQuery ui、jQuery、MVCI中吗?我得到了一个“object”未定义错误。这是什么原因?我应该把它拿出来吗?当我拿出来时,整个页面也坏了。有什么建议吗?这些主题也值得一读,尤其是特别适用于“.browser”服务器端文件修复!和
      
      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();
          }
        };
      }