【问题标题】:Force ASP.NET to generate JavaScript for all User Agents强制 ASP.NET 为所有用户代理生成 JavaScript
【发布时间】:2012-12-24 21:52:38
【问题描述】:

我最近在我的 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 的方法吗?

【问题讨论】:

  • 您的用户真的遇到过这个问题吗?如果没有,那么我会问您的用户是否实际遇到过其他问题。
  • @John - 没有人报告它,但我们的网络应用程序处理电子商务,因此遇到问题的普通用户通常不会遇到联系我们的麻烦,他们会继续前进到竞争对手的网站。我们还刚刚推出了一个移动商店,它邀请了一个全新的可能的用户代理联盟,我想尽可能多地避免问题。
  • 我希望您记录未处理的异常。否则,您可能会花时间解决客户没有遇到的问题,而您的竞争对手却会花时间改进他们的网站。
  • @John - 我们控制了未处理的异常,并在问题出现时修复它们。到目前为止,您所说的一切都没有真正解决我的问题。
  • @Adam 我同意约翰的观点。只更新用户代理以避免 IE 10 等问题,但不更改默认浏览器的默认行为。

标签: javascript asp.net postback dopostback


【解决方案1】:

如果您将 User Agent 设置为空,或者如果您使用未知的 User Agent 字符串,则 asp.net 会从 Browsers 目录中读取 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

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多