在 Blazor 服务器端应用程序中处理不同浏览器功能的最佳方法是什么?

What is the best way to handle different browser features within a Blazor Server-Side Application?

提问人:dan-kli 提问时间:12/1/2021 最后编辑:dan-kli 更新时间:12/1/2021 访问量:330

问:

编辑:我最初只想知道如何在 Blazor 服务器端检测不同的浏览器,并相应地更改应用的行为。答案可以在这里找到: 如何在服务器端 Blazor 中使用 HttpContext 对象来检索有关用户、用户代理的信息 然后,我从@CodeCaster中了解了功能检测并更改了这个问题,因为这似乎是解决我问题的更好方法。

这是我的初始帖子:

我想根据客户端使用的浏览器支持的内容在起始页上加载不同的内容。(或者让客户端根据其浏览器加载某个起始页)像这样的东西:浏览器检测

检测客户端正在使用的浏览器的最佳方法是什么,以及 Blazor 服务器端应用中执行此操作的最佳位置在哪里?

C# 浏览器 Blazor 服务器端 浏览器检测

评论

1赞 vernou 12/1/2021
这回答了你的问题吗?在 Blazor 服务器端应用中获取用户代理和 ipGet user-agent and ip in Blazor server-side app
0赞 dan-kli 12/1/2021
谢谢。实际上,对您的链接的回答建议如下: 如何在 Blazor 中获取客户端 IP 和浏览器信息? 这正是我所需要的
1赞 Cleptus 12/1/2021
不,不要删除它,你得到的答案可能比相关问题中的答案更好。

答:

1赞 CodeCaster 12/1/2021 #1

检测浏览器的最佳方法是什么

你不需要,过去二十年的做法需要消失。请改用功能检测。

看:

关键点(摘自上一个链接):

这种方法的问题是双重的。首先,它在一次检查中捆绑了有关浏览器支持的功能的多个假设。一个错误的假设可能会破坏网站。因此,作为开发人员,您必须准确跟踪特定浏览器的每个版本支持哪些功能。

第二个问题是,这种浏览器检查没有考虑浏览器版本,因此不是面向未来的。即使它适用于当前版本的浏览器,下一个版本也可能不需要(或者更糟的是,可能会完全删除)浏览器检测用于添加到站点的解决方法的支持。

评论

0赞 dan-kli 12/1/2021
好的,谢谢,我会看看的。
1赞 enet 12/1/2021
@hakuna你的塔塔斯,这个答案是不正确的,与问题无关。如果您想接受它,请相应地更改您的问题。如果你仍然坚持认为这个问题是正确的,那么答案就在这里:stackoverflow.com/a/59538319/6152891
0赞 CodeCaster 12/1/2021
@enet我不是说这是不可能的,我是说你不应该做浏览器检测。我在你的回答中没有看到任何证据可以反驳这一点。
0赞 dan-kli 12/1/2021
@enet 我会编辑我的问题
0赞 enet 12/1/2021
@CodeCaster,你的答案是正确的,但问题是错误的。这就是为什么我告诉提问者:如果你想接受它,请相应地改变你的问题。否则,我认为您所说的很重要,但没有回答如何从 Blazor Server App 检测用户正在使用的浏览器。Browser Detection