2011-12-25 88 views
4

我目前正在使用它来检测访问者是否安装了Flash,如果不是,我假设他们是iPhone用户,但现在看来它并不总是像我希望的那样工作,因为有时他们会重定向到我的网站的Flash版本和某个谁得到安装也闪重定向到我的网站的iPhone版本的人如何检测是否是iOS设备并重定向?

<!DOCTYPE html> 
<html> 
<head>  
    <script src="http://www.featureblend.com/flash_detect_1-0-4/flash_detect.js" type="text/javascript" charset="utf-8"></script> 

<script type="text/javascript"> 
    if(!FlashDetect.installed){ 
     window.location = "?flash=false";  
    }else{ 
     window.location = "?flash=true"; 
    } 
    </script> 
</head> 

事情是我将如何检测,如果他们是用iPhone/iPad/iPod的/ AppleTV的类似的东西,并将它们重定向到flash = false URL,如果它们不属于上述情况,则会重定向到flash = true?

我试图找到,但确实无法找到确切的我要找的

谢谢你,圣诞快乐给大家。

+0

您使用什么服务器端语言? – Virendra 2011-12-25 20:26:23

+0

@Virendra我使用index.php – Ali 2011-12-25 20:29:51

+0

如果您使用PHP,您也可以使用.htaccess来做到这一点 – Virendra 2011-12-25 20:33:25

回答

8

有很多关于如何实现这一教程。你可以从这里开始: http://www.hand-interactive.com/resources/detect-mobile-javascript.htm

简单地说,你可以简单地查找字符串“iPhone”,“iPod”的,“iPad的”等等......到用户代理字符串类似下面的代码:

var uagent = navigator.userAgent.toLowerCase(); 

if (uagent.search("iphone") > -1 || 
    uagent.search("ipod") > -1 || 
    uagent.search("ipad") > -1 || 
    uagent.search("appletv") > -1) { 
    window.location = "?flash=false";  
} else { 
    window.location = "?flash=true"; 
} 

祝你圣诞快乐太:)

+0

感谢您的回答,所以我使用||或&&条件实现其余的设备? – Ali 2011-12-25 20:32:28

+0

检查我的更新答案:他们是独家条件,如果一个设备是一个iPod然后它不能也是一个iPad或iPhone,所以你将不得不使用||。 – 2011-12-25 20:41:07

+0

谢谢你给我的访问者最好的解决方案:D Happy Holiday! – Ali 2011-12-25 20:46:51

3

尝试使用类似的东西来

var agent=navigator.userAgent.toLowerCase(); 
var is_iphone = ((agent.indexOf('iphone')!=-1); 
if (is_iphone) { conditional code goes here } 

更新:您还可以通过使用.htaccess文件重定向用户。这htaccess的规则将检查用户是否正在使用iPhone,如果是然后重定向到子站点的“iphone”

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} iPhone 
RewriteRule .* http://iphone.mydomain.com/ [R] 

如果你不知道如何使用.htaccess文件here的是,我写了一篇博客文章早些时候关于它。

要添加更多的设备添加类似于 JavaScript代码:

var agent=navigator.userAgent.toLowerCase(); 
var is_iphone = ((agent.indexOf('iphone')!=-1); 
var is_ipad = ((agent.indexOf('ipad')!=-1); 
if (is_iphone || ipad) { conditional code goes here } 

的.htaccess

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} iPhone 
RewriteCond %{HTTP_USER_AGENT} iPad 
RewriteRule .* http://ios.mydomain.com/ [R] 
+0

这将适用于iPad/iPod和AppleTV? – Ali 2011-12-25 20:29:24

+1

不,你将不得不检查每种类型的设备 – Virendra 2011-12-25 20:32:04

+0

谢谢你是非常好的信息,但只有你提供的两个代码的最后一个问题,我怎么能为其他设备添加更多的条件? – Ali 2011-12-25 20:45:17

1

检查用户代理字符串来识别用户正在使用的设备,并相应地重定向。你将不得不检查所有不同的设备,iphone,ipad ,, ipod,appletv等

2

我有一个类似的问题,试图动态加载JavaScript文件,只有当用户在IOS/safari上,这就是我来与:

<script> 
    //include jquery when mobile. 
    var isIOS = navigator.userAgent.match(/iPad/i) != null || navigator.userAgent.match(/iPhone/i) != null; 
    if(isIOS){ 
     var script = document.createElement('script'); 
     script.type='text/javascript'; 
     script.src = 'js/jquery.min.js'; 
     document.getElementsByTagName('head')[0].appendChild(script); 
    } 
</script> 
相关问题