Javascript 是否可以检测Android captive portal浏览器?

Javascript 是否可以检测Android captive portal浏览器?,javascript,android,google-chrome,user-agent,captivenetwork,Javascript,Android,Google Chrome,User Agent,Captivenetwork,我有一个专属门户,从Android 5.0+棒棒糖开始,它在Android的专属门户浏览器中启动,而不是在设备的默认浏览器中启动 我需要以某种方式检测它们是否位于捕获门户浏览器(与常规web浏览器相反)中,如果是,则显示不同的内容 是否可以通过检查用户代理或通过Javascript来检测它们是否在捕获的门户浏览器窗口中?我已经查看了Android 5.1设备上的用户代理,但我看不到任何区别: 专属门户浏览器: Mozilla/5.0 (Linux; Android 5.1; Elite 5 Bu

我有一个专属门户,从Android 5.0+棒棒糖开始,它在Android的专属门户浏览器中启动,而不是在设备的默认浏览器中启动

我需要以某种方式检测它们是否位于捕获门户浏览器(与常规web浏览器相反)中,如果是,则显示不同的内容

是否可以通过检查用户代理或通过Javascript来检测它们是否在捕获的门户浏览器窗口中?我已经查看了Android 5.1设备上的用户代理,但我看不到任何区别:

专属门户浏览器:

Mozilla/5.0 (Linux; Android 5.1; Elite 5 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 5.1; Elite 5 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36
普通谷歌浏览器:

Mozilla/5.0 (Linux; Android 5.1; Elite 5 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
Mozilla/5.0 (Linux; Android 5.1; Elite 5 Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.94 Mobile Safari/537.36
版本号略有不同,但Android/Chrome版本之间似乎不一致,这不是确定浏览器类型的可靠方法


还有其他方法可以检测到它吗?提前感谢。

您可以使用它来检测Fetch API或本地存储功能的存在,这两种功能都存在于普通的Google Chrome和Firefox中,但在Capture portal浏览器中不可用。

我正在测试的像素设备现在通过了这两项测试-

try {

    const test = 'test';
    
    localStorage.setItem(test, test);
    localStorage.removeItem(test);
    sessionStorage.setItem(test, test);
    sessionStorage.removeItem(test);
    alert("We're in a chrome instance!")
} catch(e) {
    alert("We're inside a Captive Portal!")
}

在Android 10像素XL和普通像素上运行


对于许多其他设备-上面的localStorage测试工作正常-我们进入一个捕获块,确定我们不在一个成熟的Chrome选项卡/Android默认浏览器选项卡中,但安卓似乎已经改变了它运行captive portal的方式。

我正在检测Fetch和localstorage,它可以工作,但不再适用于三星等较新手机S7@devwannabe:localstorage似乎仍然是一个有效的测试(不存在于Capture中,存在于chrome、firefox和opera中)。我同意“获取”现在出现在捕获门户浏览器中。另一个选项是csspseudotransitions,但我不会将其用作呈现功能!(Modernizr.pagevisibility&&Modernizr.sessionstorage&&Modernizr.localstorage&&Modernizr.hashchange)。直到现在才有问题。它适用于Android 5+和iOS。似乎不再适用了。。。至少在Android 7.1上,请注意iOS中的私人浏览也(过去)禁用了localStorage: