条件不正常

时间:2015-04-21 16:46:05

标签: javascript coffeescript browser-detection

我正在设置一个简单的浏览器检查程序,如果浏览器不受“支持”,则应在用户的浏览器上弹出警报。

我使用名为application.haml

的库在detect.js中设置了一个全局变量

:javascript var ua = detect.parse(navigator.userAgent); 然后我在控制台中吐出来确保它正在捕获正确的数据,它是:

console.log(ua.browser.family);

并在base.coffee中设置条件:

if ua.browser.family != 'Chrome' || 'Safari' || 'Firefox' || 'Chrome Canary' alert('Your browser is not supported.')

现在,警报会在任何浏览器上弹出,即使它是Chrome,Safari,Firefox或Chrome Canary。

寻找第二双眼睛...为了让它正常工作,我错过了什么?

3 个答案:

答案 0 :(得分:4)

声明'Chrome' || 'Safari' || 'Firefox' || 'Chrome Canary'将始终评估为“' Chrome'”,因此无法正常工作。您需要测试每个字符串的完整条件:

if ua.browser.family != 'Chrome' || ua.browser.family != 'Safari' || ua.browser.family != 'Firefox' || ua.browser.family != 'Chrome Canary' 

Coffescript测试数组是否包含元素的方法更短:

if ua.browser.family in ['Chrome', 'Safari', 'Firefox', 'Chrome Canary']

答案 1 :(得分:1)

 if ((ua.browser.family != 'Chrome') || (ua.browser.family !='Safari') 
 || (ua.browser.family !='Firefox') || (ua.browser.family !='Chrome Canary')) 
  alert('Your browser is not supported.')

尝试这个..

答案 2 :(得分:0)

应该阅读if ua.browser.family != 'Chrome' && ua.browser.family != 'Safari' && ua.browser.family != 'Firefox' && ua.browser.family != 'Chrome Canary'