【问题标题】:How to detect Facebook in-app browser?如何检测 Facebook 应用内浏览器?
【发布时间】:2015-10-12 16:55:50
【问题描述】:

您有过 Facebook 应用内浏览器检测方面的经验吗? 用户代理的核心区别是什么?

我不想知道它是否是唯一的移动/ios/chrome。我需要知道用户代理是否特定于 Facebook 应用内浏览器

【问题讨论】:

    标签: javascript facebook mobile browser in-app


    【解决方案1】:

    您可以在用户代理中检查 FBAN / FBAV。

    检查此链接: Facebook user agent

    【讨论】:

    • ua.indexOf("FBAN") > -1 和 ua.indexOf("FBAV") > -1 是什么意思?强制用户使用网络浏览器而不是应用内浏览器?
    • @RobbNesp var us = navigator.userAgent 给你一个字符串值。 .indexOf() 检查字符串中子字符串的位置。如果未找到,则返回值 -1。它只是通过检查浏览器的用户代理是否包含给定的子字符串来检查它是否是 Facebook 浏览器。
    • 谢谢!也分享 Instagram 的 sn-p:(ua.indexOf('Instagram') > -1)
    • 我在答案中添加了 sn-p,谢谢@jeff_drumgod
    • 您能解释一下|| window.opera 位吗?我认为它不会转换为用户代理字符串。
    【解决方案2】:

    要完成worker11811关于使用用户代理的回答,这里有一个代码sn-p来使它工作:

    function isFacebookApp() {
        var ua = navigator.userAgent || navigator.vendor || window.opera;
        return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
    }
    

    【讨论】:

      【解决方案3】:

      您可以使用https://www.npmjs.com/package/detect-inapp 并检查 inapp.isInApp() 是否为真

      【讨论】:

        【解决方案4】:

        这个 javascript 运行良好

        var standalone = window.navigator.standalone,
            userAgent = window.navigator.userAgent.toLowerCase(),
            safari = /safari/.test( userAgent ),
            ios = /iphone|ipod|ipad/.test( userAgent );
        
        if( ios ) {
            if ( !standalone && safari ) {
                //browser
            } else if ( standalone && !safari ) {
                //standalone
            } else if ( !standalone && !safari ) {
                //uiwebview (Facebook in-app browser)
        
            };
        } else {
            //not iOS
        };
        

        【讨论】:

        • OP 询问:“需要知道用户代理是否特定于 Facebook 应用内浏览器”。
        猜你喜欢
        • 2017-05-22
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 2013-04-29
        • 2012-01-20
        • 2012-08-24
        相关资源
        最近更新 更多