zoukankan      html  css  js  c++  java
  • IE10,11下_doPostBack未定义错误的解决方法

    出现的原因

      .NET2.0.NET4.0一起发布的浏览器定义文件中有一个错误,它们保存相当一部分浏览器版本的定义。但是浏览器的有些版本(比如IE10,11)则不再在这个范围之内。因此,ASP.NET把它们看做是未知的浏览器,默认降级处理,这样就会给用户带来不便,比如不支持JavaScript特性。而ASP.NET的服务器控件asp:LinkButton的渲染机制使得错误发生。

      服务器控件: 

    <asp:LinkButton ID="Logout" runat="server" OnClick="Logout_Click">注销</asp:LinkButton>

      渲染后的HTML代码:

    <a id="Logout" href="javascript:__doPostBack('Logout','')">注销</a>

      再看看自动生成的js代码:

    var theForm = document.forms['form1'];
    if (!theForm) {
        theForm = document.form1;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }

      可以看到,LinkButton依赖js方法_doPostBack来提交表单,从而执行服务器方法。而由于浏览器无法识别,导致其不能正确生成_doPostBack,于是浏览器的js解释器会向用户报出_doPostBack未定义错误。

    解决方案

      治标:安装NuGet App_BrowsersUpdate包。帮.NET Framework认识新型浏览器。仅对本网站的网页有效。

      治本:在你的服务器上安装补丁。2600088 For .NET4.02600100 For .NET2.0

      当客户端为Windows7时,IE10和IE11一般就不会出现这种错误了。不过当客户端OS为Windows8时,IE11下情况仍然存在。

      这时,尝试在服务器上安装.NET Framework4.5来解决此问题。

      然而,.NET Framework4.5并不支持OS Windows Server 2003,所以,如果你的网站正在建设中,建议弃用LinkButton控件

      (完)

  • 相关阅读:
    LEFT JOIN个别问题
    phporjquery生成二维码
    杂项(乌班图、flex的使用实例)
    mysql创建用户并授权,解决1045
    jar运行指定jdk
    Flutter升级版本后,运行项目报错
    spring boot执行jar包指定active profile
    centos7 安装clamav 进行病毒扫描查杀
    CentOS7上安装MySQL 5.7.32(超详细)
    Centos7.5 安装elasticsearch 7.13.2 遇到的问题记录
  • 原文地址:https://www.cnblogs.com/dongtianee/p/4488827.html
Copyright © 2011-2022 走看看