当前位置:  开发笔记 > 编程语言 > 正文

自动检测移动浏览器(通过用户代理?)

如何解决《自动检测移动浏览器(通过用户代理?)》经验,为你挑选了9个好方法。

如何检测用户是否正在通过移动Web浏览器查看我的网站,以便我可以自动检测并显示我的网站的相应版本?



1> Chad Smith..:

Detect Mobile Browser上有开源脚本,可以在Apache,ASP,ColdFusion,JavaScript和PHP中执行此操作.


但是没有办法绕过它.在某种程度上,任何类型的解决方案都将对用户代理进行正则表达式检查.
Bleh ...我真的不喜欢这些解决方案的"代码味道".正则表达式匹配使用一堆4个字符的前缀,没有关于它们最初来自哪里的线索...不,谢谢.
@guitar如果是这样,那么你应该发送你的UA.
我不喜欢没有许可证的"开源"解决方案,也没有更新的迹象.
这是一个极端的正则表述.我同意,这个代码的气味并不好.

2> Vinko Vrsalo..:

是的,阅读User-Agent标题就可以了.

有一些已知移动用户代理的列表 ,因此您无需从头开始.我必须做的是建立一个已知用户代理的数据库,并在检测到修改时存储未知数,然后手动弄清楚它们是什么.在某些情况下,最后一件事可能有点过分.

如果你想在Apache级别进行,你可以创建一个脚本,定期生成一组重写规则来检查用户代理(或者只是一次并忘记新的用户代理,或者每月一次,不管你的情况如何),比如

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} (OneMobileUserAgent|AnotherMobileUserAgent|...)
RewriteRule (.*) mobile/$1

例如,请求将http://domain/index.html移至 http://domain/mobile/index.html

如果您不喜欢让脚本定期重新创建htaccess文件的方法,您可以编写一个模块来检查用户代理(我没有找到已经制作的模块,但是找到了这个特别合适的例子)并获得了用户代理从一些网站更新它们.然后你可以根据需要使方法复杂化,但我认为在你的情况下,以前的方法会很好.


可以通过某种类型的.htaccess命令在Web服务器层(Apache)上完成 - 而不是使用像PHP这样的脚本语言吗?

3> 小智..:

只是一个想法,但如果你从相反的方向解决这个问题怎么办?而不是确定哪些浏览器是移动的,为什么不确定哪些浏览器不是?然后将您的站点编码为默认为移动版本并重定向到标准版本.查看移动浏览器时有两种基本的可能性.它有JavaScript支持或它没有.因此,如果浏览器没有javascript支持,它将默认为移动版本.如果它确实有JavaScript支持,请检查屏幕大小.任何低于特定大小的东西都可能是移动浏览器.任何更大的东西都会被重定向到您的标准布局.然后,您需要做的就是确定禁用JavaScript的用户是否可以移动.
根据W3C,禁用JavaScript的用户数量约为5%,其中大多数用户已将其关闭,这意味着他们实际上知道他们使用浏览器做了什么.他们是你的观众的很大一部分吗?如果没有,那么不要担心它们.如果是这样,最糟糕的情况是什么?您有这些用户浏览您网站的移动版本,这是一件好事.


这是一个非常好的主意,我认为这是一个优雅的解决方案.
+1这听起来像一个非常甜蜜的想法,但这会影响搜索引擎爬虫吗?

4> Ed Poor..:

以下是我在JavaScript中的使用方法:

function isMobile() {
  var index = navigator.appVersion.indexOf("Mobile");
  return (index > -1);
}

请参阅www.tablemaker.net/test/mobile.html上的示例,其中手机上的字体大小增加了三倍.



5> Pablo Santa ..:

我最喜欢的移动浏览器检测机制是WURFL.它经常更新,适用于所有主流编程/语言平台.


它也[不再免费](http://en.wikipedia.org/wiki/WURFL#License_update).

6> Cory..:

您是否考虑过使用css3媒体查询?在大多数情况下,您可以专门为目标设备应用一些CSS样式,而无需创建站点的单独移动版本.

@media screen and (max-width:1025px) {
   #content {
     width: 100%;
   }
}

您可以将宽度设置为您想要的宽度,但1025将捕获iPad横向视图.

您还需要在脑中添加以下元标记:

 



8> mjf..:

移动设备浏览器文件是检测ASP.NET项目的移动(和其他)broswers的好方法:http://mdbf.codeplex.com/



9> sohel khalif..:

您可以简单地检测移动客户端 navigator.userAgent,并根据检测到的客户端类型加载备用脚本:

 $(document).ready(function(e) {

        if(navigator.userAgent.match(/Android/i)
          || navigator.userAgent.match(/webOS/i)
          || navigator.userAgent.match(/iPhone/i)
          || navigator.userAgent.match(/iPad/i)
          || navigator.userAgent.match(/iPod/i)
          || navigator.userAgent.match(/BlackBerry/i)
          || navigator.userAgent.match(/Windows Phone/i)) {

         //write code for your mobile clients here.

          var jsScript = document.createElement("script");
          jsScript.setAttribute("type", "text/javascript");
          jsScript.setAttribute("src", "js/alternate_js_file.js");
          document.getElementsByTagName("head")[0].appendChild(jsScript );

          var cssScript = document.createElement("link");
          cssScript.setAttribute("rel", "stylesheet");
          cssScript.setAttribute("type", "text/css");
          cssScript.setAttribute("href", "css/alternate_css_file.css");
          document.getElementsByTagName("head")[0].appendChild(cssScript); 

    }
    else{
         // write code for your desktop clients here
    }

    });

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有