【问题标题】:How to only detect if is an iOS devices and redirect?如何仅检测是否是 iOS 设备并重定向?
【发布时间】:2011-12-25 20:22:35
【问题描述】:

我目前正在使用它来检测访问者是否安装了 Flash,如果没有,我假设他们是 iPhone 用户,但现在它似乎并不总是像我希望的那样工作,因为有时他们被重定向到我网站的 flash 版本,有时安装 flash 的人也会重定向到我网站的 iPhone 版本

<!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?

我试图找到但真的找不到我正在寻找的确切内容

谢谢大家,祝大家圣诞快乐。

【问题讨论】:

  • 你使用什么服务器端语言?
  • 如果你使用 PHP,你也可以使用 .htaccess 来做到这一点
  • 有什么信息来源可以看看吗?真的,我的 PHP 课程将在下学期开始,但这是针对我的网站的,我真的很想知道,所以我可以解决这个问题//// 抱歉打断你
  • 我会将该代码添加到下面的答案中。

标签: iphone flash redirect detect


【解决方案1】:

有很多关于如何实现这一点的教程。你可以从这里开始: 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";
}

也祝你圣诞快乐:)

【讨论】:

  • 感谢您的回答,所以我使用 ||或 && 条件来实现其余设备?
  • 检查我更新的答案:它们是排他性条件,如果设备是 ipod,那么它不能也是 ipad 或 iphone,所以你必须使用 ||。
  • 谢谢,这只是为我的访客提供了最好的解决方案:D 节日快乐!
【解决方案2】:

尝试使用类似于

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]

【讨论】:

  • 不,您必须检查每种类型的设备
  • 谢谢这是非常好的信息,但最后一个问题是您提供的两个代码如何为其他设备添加更多条件?
【解决方案3】:

我在尝试仅在用户使用 IOS/safari 时动态加载 javascript 文件时遇到了类似的问题,这就是我想出的:

<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>

【讨论】:

    【解决方案4】:

    检查用户代理字符串以识别用户正在使用的设备并相应地重定向。您必须检查所有不同的设备,iphone、ipad、ipod、appletv 等

    【讨论】:

      猜你喜欢
      • 2019-01-25
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2018-10-28
      相关资源
      最近更新 更多