强制ASP.NET为所有用户代理生成JavaScript

我最近在ASP.NET Web应用程序中注意到,如果我将用户代理设置为空字符串(使用FireFox插件来欺骗用户代理),那么ASP.NET将不会生成执行回发所需的javascript.更具体地说,如果您尝试从javascript调用__doPostBack(a,b)函数,则会收到错误消息,指出函数未定义.

我知道每个浏览器都有一个用户代理,所以这通常不会出现,但问题的实质仍然存在:如果你依赖,有些情况下无法识别或格式错误用户代理可能会导致您的Web应用程序无法使用回发.

这类似于这个问题:ASP.net not generating javascript for some User Agents,但是如果我正确地阅读它,看起来你会逐个修复每个无法识别的用户代理并将其掩盖为另一个浏览器.我对单个用户代理的关注较少,而且由于某些用户代理无法使用我的应用程序而我不会知道它,因为错误发生在javascript而不是服务器上.

有谁知道我可以强制ASP.NET始终生成所需的JavaScript的方式?

解决方法

如果您为用户代理设置为空,或者您使用未知的用户代理字符串,则asp.net从浏览器目录中读取Default.browser文件,您可以在那里定义如何对此案例采取行动.

你需要更改的行和在这种情况下使用javascript是那些:

<capability name="jscriptversion"       value="5.6" />
        <capability name="javascript"           value="true" />
        <capability name="javascriptversion"    value="1.5" />

认情况下,javascript行为false.我想在这里发表评论,我不确定你是否真的需要改变它,如果有人欺骗用户代理,就让它去做.如果他喜欢您的网站并且需要使用它,那么最好让您知道如何处理他使用的浏览器.另一方面,如果可能的话,你必须小心,你的网站即使没有javascript工作,至少对你做的大部分行动.

最好避免使用链接按钮(使用_doPostBack)并使用回拨按钮.我知道GridView和其他人也使用_doPostBack进行分页……好吧,但是更好的一个好网站甚至可以使用javascript工作.

一些类似的问题:
__doPostBack is undefined on DotNetNuke website for IE 10

和这个博客Bug and Fix: ASP.NET fails to detect IE10 causing _doPostBack is undefined JavaScript error or maintain FF5 scrollbar position

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...