2014-03-30 111 views
-1

我正在处理需要检测正在使用的浏览器(Chrome,Firefox,IE,Safari,Opera)的页面,并相应地设置一个标记值,从1到5来设置我想要更改的标记值我的图像标记的来源(基本上我想根据当前使用的浏览器显示图标图像)。使用jQuery检测浏览器

我需要这个使用jQuery。我最初的选择是js,但我想这不是一个非常可靠的选择,因为有些用户在浏览时关闭了脚本,并且可以在设置中修改浏览器的用户代理(如Opera)。纠正我,如果我错了。

有人可以帮助我的代码吗?

编辑:我再次问这个问题的原因是,其他重复的问题讨论最佳实践和使用$ .support和$ .browser进行检测,但据我了解,$ .support只检查不透明度支持。它能够准确指出正在使用哪个浏览器?我显示相应徽标的任务非常特殊,只需要检查浏览器名称(甚至不包括版本)。我怎样才能做到这一点?

+0

http://api.jquery.com/jquery.browser/ – David

+1

关于你的评论“我需要这个使用jQuery。我最初的选择是js“请注意,jQuery **是** javascript,它只是一个JavaScript库。 – mralexlau

+1

也为了您的观点,修改浏览器的用户代理,是的,这是可能的,但可能不是你想要关注的东西。 imo,如果用户故意更改其用户代理字符串,那么他们应该期望在网站上看到不同的风格行为。 – mralexlau

回答

1

$.browser有很多选项可以知道浏览器是什么。 (在1.3不推荐使用)

可以使用this plugin jQuery的版本1.9+

+0

'jQuery.browser'在v1.3中被弃用,并在v1.9中被删除。文档:http://api.jquery.com/jQuery.browser/ – Mooseman

1

注意,不拿用户代理switching考虑

/chrome|chromium|firefox|msie|opera/.exec(navigator.userAgent.toLowerCase()).toString().replace(/chrome|chromium/g, "-webkit-").replace(/firefox/g, "-moz-").replace(/msie/g, "-ms-").replace(/opera/g, "-o-") 

下面js检查浏览器style属性实际上支持已存在的style属性,或者稍后动态插入。它主要为animations组成,虽然可以修改为在浏览器中测试任何css,style属性。如果props已经存在于stylesheet,vendor prefixes被插入stylesheet。如果props稍后动态插入,vendor prefixes也被插入,或附着在那些props的功能

// prefix.1.1.min.js 2013, 2014 guest271314 
    // add css `prefixes` 
    // TODO: `opera` compatibility; utilizes `-o-`, `-webkit-`, w3c 
    (function prefix() { 
     /* var el = $(selector).get(0), i.e.g, $("body").get(0), $("#animated").get(0) */ 
     var prefixes = {"MozAnimation": "-moz-","webkitAnimation": "-webkit-" 
         ,"msAnimation": "-ms-","oAnimation": "-o-"}; 
     var props = ["animation", "backface-visibility", "border-radius" 
        , "box-shadow", "transform", "transform-style", "transition"]; 
     $.each(prefixes, function(key, val) { 
      $("style") 
      .attr({"data-prefix": val,"class": String(val).replace(/-/g, "")}); 
      return !(key in el.style); 
     }); 
     $.each(props, function(index, value) { 
      var cssPrefix = $("style").attr("data-prefix"); 
      if (value in el.style === false) { 
       $.fn.pfx = function(prop, pfxprop, q) { 
        return $("style").html($("style").text() 
          .replace(new RegExp(prop, "g"), q 
          + $("style").attr("data-prefix") + pfxprop)) 
       }; 
       $("style").pfx("@keyframes", "keyframes", "@") 
       .pfx(value, value, ""); 
      }; 
     }); 
    }()); 

github上https://github.com/guest271314/prefix/blob/master/prefix.1.1.min.js