我在使用ASP.NET控件的IE10上面临一个问题,需要JavaScript回发[比如,链接按钮]。
它正在适用于IE9版本以及IE10兼容模式。但是在IE10标准模式下,它给出了以下错误。 SCRIPT5009:'__ doPostBack'未定义
[我创建了一个带有简单asp:link按钮的演示项目,该按钮可以重定向到另一个页面。]
Tried the solution, but didn't work for me
有人可以建议修复吗?
答案 0 :(得分:50)
.NET 2.0和.NET 4附带的浏览器定义文件中显然存在一个错误。定义文件不支持IE10作为浏览器版本,因此默认为默认定义,不支持JavaScript。
Scott Hanselman在这里有一篇关于这个问题的非常详细的文章:http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
斯科特提出了两种解决方案,第一种是推荐的解决方案:<强> 1。机器范围的修复 在服务器上下载并安装修补程序:
<强> 2。仅限网站修复
将NuGet中的App_BrowsersUpdate
软件包安装到您的网站中,以导入新的ie和firefox浏览器定义。
答案 1 :(得分:1)
如果你已经尝试过修复,但仍然在IE11中看到错误,那么将.net框架更新为4.5就可以了。
答案 2 :(得分:0)
IE 10存在问题:
它无法识别带有_doPostBack的链接[基本上可以在ASP链接按钮的HTML输出中看到]
您可以参考以下链接获取修复:
答案 3 :(得分:0)
基本上发生了什么是有2个缺少html隐藏元素“eventtarget” 和“eventargument”,以及缺少的函数“__doPostBack”。
DOM中缺少这些内容。
我尝试了为此列出的所有修复程序,但都没有。但是,使用jquery和javascript的组合有一个不显眼的解决方案。将此文件添加到您的javascript文档准备就绪,然后您即可参加比赛(这比在您的服务器上安装.net framework 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系统在企业面向公众的网站上工作,这可能只是一个更简单的解决方案,而不是可能引入通过更新平台而产生的新错误。