区分铬和歌剧

时间:2013-10-23 03:44:15

标签: javascript google-chrome cross-browser opera conditional-statements

我有这个javascript函数,它应该在chrome中打开一个不同于其他浏览器的div。正确的div在firefox,Internet Explorer,safari和chrome中打开,但是opera会打开chrome div而不是其他div。有没有办法阻止Opera执行chrome功能?

     function Browser() {
    var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

      if (is_chrome) {
        document.getElementById('chrome').style.display = 'block';
        document.getElementById('notchrome').style.display = 'none';
}
  }

2 个答案:

答案 0 :(得分:3)

如果您在此处阅读,您可以看到您可以查找OPR字符串以识别Opera。

http://my.opera.com/ODIN/blog/2013/07/15/opera-user-agent-strings-opera-15-and-beyond

例如,您可以将它包含在您的测试中:

var userAgent = navigator.userAgent.toLowerCase();
var is_chrome = userAgent.indexOf('chrome') > -1 && userAgent.indexOf('opr/') == -1;

答案 1 :(得分:0)

不要冒犯你。但是,我认为,如果你检查它是否只是chrome而不是opera,那么对于在chrome平台上构建的其他自定义浏览器来说,它会中断。示例中文QQ浏览器。

相反,您可以检查用户代理是否包含“Chrome”,navigator.vendor包含“Google Inc.”这精确地为您提供了镀铬。

  

var isChrome = navigator.userAgent.toLowerCase()。search('chrome')!= -1&& navigator.vendor.toLowerCase()。search('google')!= -1;

我使用toLowerCase()以保持干净和微妙。