Javascript 如果您通过Web浏览器或应用程序进入网站,网站如何区分?

Javascript 如果您通过Web浏览器或应用程序进入网站,网站如何区分?,javascript,json,swift,web-applications,webview,Javascript,Json,Swift,Web Applications,Webview,网站如何区分您是通过Safari和Chrome等Web浏览器进入网站,还是通过移动应用程序上的Web视图进入网站 我正在制作网络应用程序。但我希望在使用web浏览器或使用web View的移动应用程序访问网站时提供不同的UI。有两种可能的方法: 浏览器和web视图(这是一种无头浏览器)将用户代理字符串传递给您的网站,该字符串应该在您的服务器/编程环境中可用。您可以分析这些字符串,并在此基础上提供不同的UI。在Google中搜索webview用户代理字符串。 不要关心设备本身。根据屏幕大小和输入法

网站如何区分您是通过Safari和Chrome等Web浏览器进入网站,还是通过移动应用程序上的Web视图进入网站


我正在制作网络应用程序。但我希望在使用web浏览器或使用web View的移动应用程序访问网站时提供不同的UI。

有两种可能的方法:

浏览器和web视图(这是一种无头浏览器)将用户代理字符串传递给您的网站,该字符串应该在您的服务器/编程环境中可用。您可以分析这些字符串,并在此基础上提供不同的UI。在Google中搜索webview用户代理字符串。 不要关心设备本身。根据屏幕大小和输入法等功能提供不同的UI,开始您的旅程探索。
现在大多数开发人员都会推荐选项2。

我假设您自己实现移动应用程序和网站,并且需要检测您自己的应用程序和浏览器。我一直在为此练习一种不同的解决方案

当应用程序在移动设备中运行时,您可以将javascript桥对象插入浏览器的上下文中。当应用程序在浏览器中运行时,检查javascript桥对象是否存在,如果不存在,则进行仿真

对于这两种情况,都需要一种方法,例如:

nativeBridge.getClientId();
对于web,您将在何处实现它,如:

if( !window.nativeBridge ){
    window.nativeBridge = {
        getClientId:function(){ return "web"; }
    }
}
对于web视图,必须向桥添加一个返回不同常量的方法


注:“nativeBridge”只是一个名称。您可能有不同的对象名称。

用户代理,屏幕尺寸/分辨率。自定义标题请求,如果应用程序可以安装并且不是本地的,而是混合的。但是Adam所说的都是假的,所以不能保证用户真的是从标题指示的设备上请求网站,等等,@PoByBolek,它几乎没有任何关系。NET@VladimirM可能不是.NET,但检测移动设备的基本原理肯定是一样的。谢谢!但我想这是你改变应用程序UI的方式。网站是否有任何方式知道用户通过应用程序或safari访问它?我想更改网站上的用户界面,按照应用程序与浏览器用户访问网站的方式,而不是在应用程序上更改。这是网站检测用户是从手机还是从某些浏览器访问网站的方式,因为只有混合应用程序才会在加载页面之前定义javascript桥接对象。因此,您的网站要做的第一件事是检查javascript网桥是否已定义,以及它从哪个客户端连接。根据检查的结果,网站呈现的效果会有所不同。但是,是的,需要对应用程序进行细微的更改。否则,它就是另一个浏览器,正如其他人所提到的。