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 浏览器定义。
【讨论】:
在哪里安装包(仅限站点修复) - 在服务器端还是在编译代码的机器上? 修补程序需要安装在为网站提供服务的 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 说 javascript 函数未定义,但在 Chrome 中可以正常工作