首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过javascript检测ipad/iphone webview

通过javascript检测ipad/iphone webview
EN

Stack Overflow用户
提问于 2010-12-16 19:20:01
回答 13查看 95K关注 0票数 101

有没有办法用JavaScript检测网站是在iPad的Safari内部运行,还是在应用程序WebView内部运行?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2012-03-31 07:02:07

这使用了window.navigator.userAgentwindow.navigator.standalone的组合。它可以区分与iOS web应用相关的所有四种状态: safari (浏览器)、独立(全屏)、uiwebview和非iOS。

演示:http://jsfiddle.net/ThinkingStiff/6qrbn/

代码语言: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
    };
} else {
    //not iOS
};
票数 85
EN

Stack Overflow用户

发布于 2012-04-16 16:30:43

用户代理

在UIWebView中运行

代码语言:javascript
复制
Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/98176

在iPad上的Safari中运行

代码语言:javascript
复制
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中运行

代码语言:javascript
复制
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中运行

代码语言:javascript
复制
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中运行

代码语言:javascript
复制
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0

检测代码

代码语言:javascript
复制
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);
票数 81
EN

Stack Overflow用户

发布于 2016-12-13 03:43:04

我已经尝试了所有这些解决方案,但在我的情况下都不起作用,

我打算检测Telegram内部的Webview。我认为它使用了SFSafariViewController

我注意到Safari应用程序将所有手机样式的文本更改为带有"tel:“前缀的链接,但webview并非如此。

所以,我用了它。

在这里进行测试:jsfiddle

代码语言:javascript
复制
<!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>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4460205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档