gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:17:19 24 4
gpt4 key购买 nike

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

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

这类似于这个问题:ASP.net not generating javascript for some User Agents ,但如果我没看错的话,看起来你会逐个修复每个无法识别的用户代理并将其屏蔽为另一个浏览器。我不太关心单个用户代理,更多的是某些用户代理将无法使用我的应用程序并且我不知道的总体事实,因为错误发生在 javascript 中而不是服务器上。

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

最佳答案

如果您将用户代理设置为空,或者如果您使用未知的用户代理字符串,则 asp.net 会从 Browsers 目录中读取 Default.browser 文件并在那里你可以定义你喜欢如何处理这种情况。

您需要更改的行,在这种情况下使用 javascript 的是:

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

默认情况下,如果 false,则 javascript 行。我想在这里评论一下,我不太确定你是否真的需要更改它,如果有人欺骗了用户代理,那就让它去做吧。如果他喜欢你的网站并且需要使用它,那么最好让你知道如何处理他使用的浏览器。另一方面,如果可能的话,你必须小心,你的网站即使没有 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

关于javascript - 强制 ASP.NET 为所有用户代理生成 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com