Javascript 如何在iphone和android中检测应用内浏览器?

Javascript 如何在iphone和android中检测应用内浏览器?,javascript,android,iphone,mobile-browser,Javascript,Android,Iphone,Mobile Browser,我现在正在一个移动网站上工作。但它在普通手机浏览器和应用程序浏览器中的性能略有不同(例如,当您扫描二维码或单击社交网络应用程序中的链接时)。我使用navigator.userAgent.match(/ipad | ipod | iphone | android/I)来检测移动站点并运行相应的javascript功能,所以我猜这种检测方法可能在应用内浏览器中不起作用。是否有一种通用的方法来检测所有移动浏览器,包括应用程序内浏览器?即使是应用程序内浏览器,也存在用户代理字符串变化。您有时可以使用这些

我现在正在一个移动网站上工作。但它在普通手机浏览器和应用程序浏览器中的性能略有不同(例如,当您扫描二维码或单击社交网络应用程序中的链接时)。我使用
navigator.userAgent.match(/ipad | ipod | iphone | android/I)
来检测移动站点并运行相应的javascript功能,所以我猜这种检测方法可能在应用内浏览器中不起作用。是否有一种通用的方法来检测所有移动浏览器,包括应用程序内浏览器?

即使是应用程序内浏览器,也存在用户代理字符串变化。您有时可以使用这些来检测特定的应用程序内浏览器:例如,iOS和Android上的Facebook都包含字符串FBAV(可能是Facebook应用程序版本的缩写?)

iOS的通用解决方案如下:


我不知道Android的通用解决方案。

应用内浏览器通常使用与独立浏览器相同的浏览器框架,没有理由向主机发送任何指示差异的内容。您可能能够为全尺寸浏览器生成关于屏幕大小的启发,并假设其他尺寸是应用程序内浏览器,但这并非在所有情况下都是准确的,尤其是在一般情况下,Android。请尝试(“窗口中的ontouchstart”和窗口中的“onorientationchange”)
navigator.userAgent.match(/Android/)
还将检测移动chrome浏览器,这不是预期的结果。每个应用内浏览器的
userAgent
中都有特殊的字符串。例如,facebook的“FBAV”和kakaotalk的“KAKAO”。我认为目前的最佳解决方案是为目标应用程序浏览器列出这些特殊字符串。