0

我已经看到检测某人是否在 Javascript 中使用移动浏览器的代码(例如 jQuery 脚本),并且我看到了一些在 PHP(或其他服务器端语言)中工作的代码。但我从未见过一个很好的解释来说明在所有或任何情况下一个是否比另一个更好。有没有理由为什么一个是更好的选择?

4

6 回答 6

4

典型的答案:这取决于您为什么要进行检查...

从我的角度来看,这是我通常认为的:

  • 如果您想基于浏览器向用户呈现不同的体验(手机、平板电脑、笔记本电脑等),请在服务器上进行。

  • 如果您想呈现相同的一般体验,但需要考虑浏览器兼容性问题,请在客户端进行。

UX领域的一些人也认为向用户呈现一个空白页面并动态填充它是“糟糕的形式”。相反,应填充初始页面,并且可以动态添加或更改内容。如果您对此感到担忧,则可能需要结合使用服务器端和客户端。

于 2012-10-26T20:06:54.970 回答
1

我想说更好的方法是在服务器端,因为对于 Javascript,你需要等到页面被渲染,而在服务器端它发生在之前。

于 2012-10-26T20:04:55.227 回答
1

如果您尝试检测这一点以决定哪些 javascript 功能可用,您将获得更高的准确性,如果您在 JavaScript 中执行此操作,则不会对速度造成任何重大损失。

如果您要完全更改呈现的页面类型,例如完整网站或移动网站,则最好在服务器端进行。

于 2012-10-26T20:07:25.307 回答
0

作为一名 Web 开发人员、UX 和 UI 程序员,我认为如果有人想更改他们的 UA,那很好。他们要处理不兼容的问题。至于移动设备与桌面设备,我建议使用轻量版的 browscap.ini,而不是搜索设备检查来查找 ismobiledevice。if 语句将是真或假,那么您也可以检查平板电脑。在 if mobile 子句中检查关联数组中的 istablet 键。您可以将它用于手机或平板电脑的 CSS。

于 2015-04-13T06:32:28.160 回答
0

绿色比红色好吗?

一切都有其优点和缺点。例如,在服务器端做更可靠,在客户端做意味着更少的服务器工作。

事实上,客户端可能禁用了 JavaScript(请参阅 Firefox 的 NoScript 扩展和 Chrome 的 ScriptNo,它允许聪明的用户仅在您真正需要它的站点上启用 JS - 一个很好的副作用是它还消除了几乎所有这些天来的广告,因为它们现在似乎很大程度上依赖于来自第三方域的 JS)。因此,仅使用 User-Agent 字符串更可靠,但灵活性较差。

如果您使用 JS-heavy,您可能会使用笨拙的服务器,即您不需要慢速 PHP,但您可以通过各种 CDN 等通过高性能静态服务来提供所有数据 - 但任何需要 JS 的东西搜索蜘蛛的效果会不太好,一些用户可能会阻止它。

于 2012-10-26T20:05:00.760 回答
0

正如 Ricebowl 所说,永远不要相信客户。但是,我觉得如果您确实信任客户,这几乎总是一个问题。如果您的应用程序值得编写,则值得妥善保护。如果有人可以通过编写自己的客户端并传递您不期望的数据来破坏它,那是一件坏事。因此,您需要在服务器上进行验证。

于 2012-10-26T20:06:41.080 回答