有没有办法用JavaScript检测网站是在iPad的Safari内部运行,还是在应用程序WebView内部运行?
发布于 2012-03-31 07:02:07
这使用了window.navigator.userAgent
和window.navigator.standalone
的组合。它可以区分与iOS web应用相关的所有四种状态: safari (浏览器)、独立(全屏)、uiwebview和非iOS。
演示:http://jsfiddle.net/ThinkingStiff/6qrbn/
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
};
} else {
//not iOS
};
发布于 2012-04-16 16:30:43
用户代理
在UIWebView中运行
Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/98176
在iPad上的Safari中运行
Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3
在Mac OS X上的Safari中运行
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3
在Mac OS X上的Chrome中运行
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19
在Mac上的FireFox中运行
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0
检测代码
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);
var is_safari_or_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);
发布于 2016-12-13 03:43:04
我已经尝试了所有这些解决方案,但在我的情况下都不起作用,
我打算检测Telegram内部的Webview。我认为它使用了SFSafariViewController
。
我注意到Safari应用程序将所有手机样式的文本更改为带有"tel:“前缀的链接,但webview并非如此。
所以,我用了它。
在这里进行测试:jsfiddle
<!DOCTYPE html>
<html>
<head></head>
<body>
<ul id="phone" style="opacity:0">
<li>111-111-1111</li>
</ul>
</body>
</html>
<script>
var html = document.getElementById("phone").innerHTML;
if (navigator.platform.substr(0,2) === 'iP') {
if (html.indexOf('tel:') == -1)
alert('not safari browser');
else
alert('safari browser');
}
else
alert('not iOS');
</script>
https://stackoverflow.com/questions/4460205
复制相似问题