IE10 SCRIPT5009:“__doPostBack”未定义

Posted

技术标签:

【中文标题】IE10 SCRIPT5009:“__doPostBack”未定义【英文标题】:IE10 SCRIPT5009: '__doPostBack' is undefined 【发布时间】:2013-02-22 19:04:20 【问题描述】:

我在 IE10 上使用 ASP.NET 控件时遇到问题,需要 javascript 回发 [如链接按钮]。

它在 IE9 版本以及 IE10 兼容模式下都能正常工作。但是在 IE10 标准模式下,它给出了以下错误。 SCRIPT5009:“__doPostBack”未定义

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

Tried the solution, but didn't work for me

谁能建议解决这个问题?

【问题讨论】:

这些主题也值得一读,尤其是“.browser”服务器端文件修复! ***.com/questions/18485339/… 和 ***.com/questions/19915720/… 【参考方案1】:

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

Scott Hanselman 在这里有一篇关于这个问题的非常详细的文章:http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx

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

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

.Net 4 (http://support.microsoft.com/kb/2600088) .Net 2 (http://support.microsoft.com/kb/2600100, http://support.microsoft.com/kb/2608565)

2。仅站点修复 将 NuGet 中的 App_BrowsersUpdate 包安装到您的网站中,以导入新的 ie 和 firefox 浏览器定义。

.Net 4 (http://nuget.org/List/Packages/App_BrowsersUpdate) .Net 2 (http://nuget.org/List/Packages/App_BrowsersUpdate.net20)

【讨论】:

在哪里安装包(仅限站点修复) - 在服务器端还是在编译代码的机器上? 修补程序需要安装在为网站提供服务的 Web 服务器上 - 即在您的问题中,“服务器端”而不是“编译代码的机器”。后者只是您的开发环境。 还有 IE11? (修补程序不起作用)。微软让我们浪费了很多时间。是时候开始避开另一个 MS 浏览器了吗...? 你好。关于框架更新解决方案,为了非常清楚,有人可以确认只需要在主机上安装 FW 4.5(特定版本,是 4.5.1 好吗?),而不是将项目本身升级到 4.5?谢谢大家 在 VS2017 jQuery-ui、JQuery、MVC 中还会出现这种情况【参考方案2】:

如果您已尝试修复,但仍然在 IE11 中看到错误,请将 .net 框架更新到 4.5 即可。

【讨论】:

【参考方案3】:

IE 10 有问题:

无法识别带有_doPostBack的链接【基本见于ASP Link Button的html输出】

您可以参考以下链接进行修复:

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

【讨论】:

【参考方案4】:

基本上发生了什么是缺少 2 个 html 隐藏元素“eventtarget” 和“eventargument”,以及缺少的函数“__doPostBack”。

DOM 中缺少这些。

我尝试了为此列出的所有修复程序,但都没有奏效。然而,使用 jquery 和 javascript 的组合有一个不显眼的解决方案。将此添加到您的 javascript 上准备好文档,然后您就可以参加比赛了(这比在您的服务器上安装 .net 框架 4.5 更快,尽管如果您可以安装 4.5,那就是要走的路):

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();
    
  ;

我知道有些人说安装 4.5 解决了这个问题。我肯定会推荐的。但是,如果您像我一样在使用 .net 4 中烘焙的 cms 系统的企业公共网站上工作,那么这可能只是一个更简单的解决方案,而不是可能引入因更新您的平台而产生的新错误。

【讨论】:

我收到一个“对象”未定义错误。什么会导致这种情况?我应该把它拿出来吗? 当我把它拿出来时,整个页面都坏了。有什么建议吗?

以上是关于IE10 SCRIPT5009:“__doPostBack”未定义的主要内容,如果未能解决你的问题,请参考以下文章

链接按钮不适用于 IE 10

IE7 中的占位符

IE 说 javascript 函数未定义,但在 Chrome 中可以正常工作

@hdu - 5009@ Paint Pearls

IE10/11 Ajax XHR 错误 - SCRIPT7002:XMLHttpRequest:网络错误 0x2ef3

防止 IE 中出现“SCRIPT5:访问被拒绝”错误