2

我将创建我的 web 的 webapp。我听说有很多服务可以让事情变得简单:

我想使用将 HTML5/CSS/JS 包装成可部署的应用商店类型应用程序的工具创建移动应用程序,但也想将源 HTML5/CSS/JS 用于我的常规网站(AppMakr、AppsBuilder、AppGeyser...

有一种方法可以从 JS 中判断它是在浏览器中运行还是作为移动应用程序运行?

任何提示、帮助或建议将不胜感激,如果您需要更多信息,请告诉我,我将编辑帖子。

4

1 回答 1

1

要区分来自移动应用程序或移动浏览器的 http 请求,您可以使用用户代理。对于 safari/ios,各自的用户代理示例如下:

移动浏览器:

Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari

移动应用:

Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile

在这种情况下,检查最后是针对 Mobile 与“Version/5.0.2 Mobile/8H7 Safari”。

要在 android 中进行相同的检查,您可以执行以下操作:

function() isNativeApp {
    return /AppName\/[0-9\.]+$/.test(navigator.userAgent);
}

在用户代理上,当尝试将内容附加到启用了 javascript 的 WebView 时。

请注意,不建议检查特定用户代理,因为版本号在不断发展,这只是您可以使用的逻辑/信息的示例。像 JQuery 这样的浏览器兼容性库提供了用于智能“浏览器”嗅探的实用程序,这应该允许您以比上述逻辑更安全的方式进行此操作。这只是您要查找的信息的概述。顺便说一句,检查特定的用户代理是一个坏主意……好吧。

参考:

在 Android 浏览器或 WebView 内部检测

UIWebView 是否在请求标头中发送与移动 Safari 相同的用户代理?

于 2013-07-22T16:05:42.150 回答