我在 IE10 上遇到了一个需要 JavaScript 回发的 ASP.NET 控件问题[例如,链接按钮]。
它在 IE9 版本以及 IE10 兼容模式下都能正常工作。但是在 IE10 标准模式下,它给出了以下错误。SCRIPT5009:“__doPostBack”未定义
[我用一个简单的 asp:link 按钮创建了一个演示项目,该按钮重定向到另一个页面。]
任何人都可以建议解决这个问题吗?
我在 IE10 上遇到了一个需要 JavaScript 回发的 ASP.NET 控件问题[例如,链接按钮]。
它在 IE9 版本以及 IE10 兼容模式下都能正常工作。但是在 IE10 标准模式下,它给出了以下错误。SCRIPT5009:“__doPostBack”未定义
[我用一个简单的 asp:link 按钮创建了一个演示项目,该按钮重定向到另一个页面。]
任何人都可以建议解决这个问题吗?
.NET 2.0 和 .NET 4 附带的浏览器定义文件中显然存在错误。定义文件不适合 IE10 作为浏览器版本,因此默认为不支持 JavaScript 的默认定义。
Scott Hanselman 在这里有关于这个问题的非常详细的文章:http ://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
Scott 提出了两种解决方案,第一种是推荐的:
1.机器范围 的修复在服务器上下载并安装一个修复程序:
2. 仅站点修复从 NuGet
安装App_BrowsersUpdate
包到您的网站以导入新的 ie 和 firefox 浏览器定义。
如果您已尝试修复并且仍然在 IE11 中看到错误,则将 .net 框架更新到 4.5 即可。
IE 10 有问题:
它无法识别带有 _doPostBack 的链接【在 ASP Link Button 的 HTML 输出中基本可以看到】
您可以参考以下链接进行修复:
基本上发生了什么是缺少 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 系统的企业公共站点上工作,这可能只是一个更简单的解决方案,而不是可能引入因更新您的平台而产生的新错误。