【问题标题】:How can I detect if a web page is opened by a mobile browser or an app?如何检测网页是否由移动浏览器或应用程序打开?
【发布时间】:2016-03-06 04:01:31
【问题描述】:

如果有一个网页要插入到应用程序中,当我单击网页上的某个位置时,它可以链接到应用程序内的另一个页面,因为该特殊链接只能在应用程序内打开。但是,如果我想让同一个网页在移动浏览器中打开,我必须替换特殊链接。所以,前提是我需要检测该网页是在应用程序中打开还是在移动浏览器中打开。有人可以帮忙吗?

【问题讨论】:

    标签: javascript html web hybrid-mobile-app


    【解决方案1】:

    1) 尝试从 http 连接标头中读取用户代理标头。它将向您显示连接到您的站点的设备。 (自豪地被黑客入侵,因为标题可以更改) 这里有一个关于如何读取用户代理的 php 示例

    <?php  echo $_SERVER['HTTP_USER_AGENT']; ?>
    

    2) 在您的应用和网页上添加一些逻辑,以便相互“识别”。

    一个简单的逻辑可能是在您的网页上添加一个读取参数,该参数必须具有特定值才能允许访问。您的应用必须调用带有预期值的 url 参数。

    【讨论】:

    • 您应该详细说明要在用户代理中查找的什么。例如,Android 浏览器和混合应用中的 webview 之间的用户代理有何不同?
    • 感谢 torazaburo 和 Steven。我同意某些示例的答案并不完整。我已经更新了。
    【解决方案2】:

    您正在寻找的是用户代理,每个浏览器都有不同的用户代理(名称),它通常会告诉您浏览器是为哪种设备构建的。

    有很多使用 javascript 检索用户代理的方法,请查看之前的 StackOverflow 问题 + 答案here。

    【讨论】:

      【解决方案3】:

      您可以查看浏览器的用户代理,它是一个字符串。 MDN

      您可以通过 Javascript 访问它,然后根据结果执行条件。

      所有浏览器都会返回一些稍微不同的东西,所以你需要找到一些共同点来减少分支的数量。

      if(window.navigator.userAgent.match(/Android/i) {
          //Android browser, do something
      }
      

      这里有一堆字符串:UserAgent strings

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多