
在iOS上,用户登录后,我的webapp显示在CNA(Captive Network Assistant)d出窗口中,右上角按钮标签变为“Ok”以允许用户关闭此d出窗口.
当我在这个CNAd出窗口中显示时,我希望在我的webapp中有一个特定的行为,所以我试图检测(使用Javascript)我的webapp是否显示在这样的d出窗口中.
我首先打赌window.innerHeight值,但在我的iPhone 5上似乎很难:
Safari内部高度> 460px
在共享连接或电话呼叫期间,Safari内部的高度为440px
> Captive Network Assistant内部高度> 459px
在共享连接或电话呼叫期间,Captive Network Assistant内的高度> 439px
在我看来,1px的差异还不足以弄清楚我是否在这个CNAd出窗口中.
是否有任何其他JavaScript信息我可以依赖以确定我是否在这样的d出窗口中?
谢谢
解决方法 最后我用用户代理检测到了CNA.在CNA内部时,用户代理不在UA字符串中包含“Safari /”.
还测试了十几种其他浏览器,如Opera mini,Dolphin,Mercury,Puffin,Atomic,360 lite,……
例如,Safari UA字符串是:
Mozilla/5.0 (iPad; cpu OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML,like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25
在同一设备上,在CNA内部,用户代理字符串将是:
Mozilla/5.0 (iPad; cpu OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML,like Gecko) Version/6.0 Mobile/10A5355d
所以在PHP中我的检测看起来像:
$userAgent = strtolower($_SERVER['http_USER_AGENT']);if ((strpos($userAgent,'iphone') || strpos($userAgent,'ipad')) && (strpos($userAgent,'mozilla/') !== false) && (strpos($userAgent,'applewebkit/') !== false) && (strpos($userAgent,'mobile/') !== false) && (strpos($userAgent,'safari') === false)){ // Yes,we are in a CNA popup [...]} 总结 以上是内存溢出为你收集整理的iOS强制网络助理网页的Javascript检测全部内容,希望文章能够帮你解决iOS强制网络助理网页的Javascript检测所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)