我在ASP.NET Web应用程序最近发现,如果我把我的用户代理为空字符串(使用Firefox插件来欺骗用户代理),则ASP.NET不会产生执行回发所需要的JavaScript。 更具体地讲,如果你试图调用__doPostBack(a, b)
从您的javascript函数,你会得到一个错误,指出函数是不确定的。
据我所知,每个浏览器都有一个用户代理,所以这不会拿出经常,但问题的实质仍然存在:存在这样的一个无法识别或畸形的用户代理可以使您的Web应用程序无法使用,如果你依靠的情况下回发。
这类似于这样的问题: ASP.net不是为某些用户代理生成JavaScript ,但如果我读它的权利,它看起来像你的情况修好每一无法识别的用户代理的情况下,并掩盖它作为其他浏览器。 我关注的是少用一个单独的用户代理,以及更使整体的事实,即某些用户代理将不能够使用我的申请,我不会知道,因为错误在JavaScript中发生,而不是在服务器上。
有谁知道的一种方式,我可以强制ASP.NET总是生成所需的javascript?
如果设置为空的用户代理,或者如果你使用一个未知的用户代理字符串,然后asp.net读取Default.browser
从文件Browsers
目录,在那里你可以定义你想采取行动的情况下本。
你需要改变,在此情况下,使用JavaScript的线是的:
<capability name="jscriptversion" value="5.6" />
<capability name="javascript" value="true" />
<capability name="javascriptversion" value="1.5" />
在默认情况下,JavaScript的行,如果假的 。 我喜欢在这里发表意见,我不那么肯定,如果你真的需要改变它,如果有人恶搞用户代理,让它做它。 如果他喜欢你的网站,并需要使用它,则是更好的让你知道如何处理,他使用的浏览器。 从如果这是可能的,你必须小心,另一方面,你的网站,甚至出JavaScript的工作,至少对于大多数你做的动作。
最好避免链接按钮(使用_doPostBack)和后期使用后退按钮为例。 我知道,GridView和其他用途也是_doPostBack分页...确定这一说法,不过是更好的一个很好的网站,能够与出来的JavaScript甚至工作。
一些类似的问题:
__doPostBack未定义的DotNetNuke的网站,IE 10
这个博客: 错误和修复:ASP.NET无法检测到IE10造成_doPostBack未定义JavaScript错误或维持FF5的滚动条位置