当前位置: 首页 > 互联网 > 正文

“__doPostback”无定义的解决方法

随着浏览器的不断升级,作为传统行业,公司的浏览器升级也成了一个老大难的问题。不同子公司,不同地域的电脑版本不统一,浏览器版本也不致。最近公司统一要求所有的Web应用系统要允许支持IE11,也就是说在接下来的版本升级中,要考虑IE11的兼容性,而之前我们的测试仅在IE8的基础上。于是,不得不去做这个方面的测试。

在IE11中的“兼容性视图设置”中,清空所有兼容性站点,取消各种兼容性的设置。发现自己的两个.NET Web应用,所有的Linkbutton事件都无法响应,无法打开或跳转到另一个页面。起初以为是程序中的跳转语句有问题:Response.Redirect(“…”)。于是换了其它的跳转写法,如注入Js跳转等还是存在同样的问题。经过询问,同事的其它项目,在相同浏览器的情况下,服务器控制跳转则没有相同的问题,好生奇怪。后来,用了”F12开发者工具”调试,发现链接点击根本没有提交到后台。一串红色文字“__doPostback(…)未定义”,这让我很快定位到问题的根源。

原来是因为我的这两个项目是asp.NET4.0的。而其它同事的项目仍是asp.NET2.0的。而此时,服务器无法识别IE11等新出现的浏览器,更甚至将其认为是低版本的浏览器,也不会生成相应预定义的javascrpit脚本,所以也无法在其上面执行相关的javascript脚本,对应的操作也就无法提交到后台。查阅了网站,有不少解决方法。我选择了在应用项目中添加.browser文件的方法。只是这种方法如果有新的浏览器出来,可能仍需要添加配置。也许更高版本的asp.NET已从根本上解决这个问题,无需我们担心。

使用VS2010以上,Web站点目录,如无可添加App_Browsers目录,在此目录下可添加.browser文件。可在*.browser的<browsers/>根结点下添加如下代码:

[code lang=”xml”]
<!– Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11,0) like Gecko –>
<browser id="IE110" parentID="IE11">
<identification>
<capability name="majorversion" match="11" />
</identification>

<capabilities>
<capability name="ecmascriptversion"    value="3.0" />
<capability name="jscriptversion"       value="5.6" />
<capability name="javascript"           value="true" />
<capability name="javascriptversion"    value="1.5" />
<capability name="msdomversion"         value="${majorversion}.${minorversion}" />
<capability name="w3cdomversion"        value="1.0" />
<capability name="ExchangeOmaSupported" value="true" />
<capability name="activexcontrols"      value="true" />
<capability name="backgroundsounds"     value="true" />
<capability name="cookies"              value="true" />
<capability name="frames"               value="true" />
<capability name="javaapplets"          value="true" />
<capability name="supportsCallback"     value="true" />
<capability name="supportsFileUpload"   value="true" />
<capability name="supportsMultilineTextBoxDisplay" value="true" />
<capability name="supportsMaintainScrollPositionOnPostback" value="true" />
<capability name="supportsVCard"        value="true" />
<capability name="supportsXmlHttp"      value="true" />
<capability name="tables"               value="true" />
<capability name="supportsAccessKeyAttribute"    value="true" />
<capability name="tagwriter"            value="System.Web.UI.HtmlTextWriter" />
<capability name="vbscript"             value="true" />
</capabilities>
</browser>
[/code]

将App_Browsers连同站点一起发布,上述问题得到解决。

本文固定链接: http://www.byhard.com/?p=1335 | 海纳百川

该日志由 byhard 于2015年04月07日发表在 互联网 分类下,
原创文章转载请注明: “__doPostback”无定义的解决方法 | 海纳百川
关键字: ,

报歉!评论已关闭.