有条件的不能正常工作

conditional not working properly

我正在设置一个简单的浏览器检查器,如果浏览器不是 "supported",它应该在用户的浏览器上弹出警告。

我使用名为 detect.js:

的库在 application.haml 中设置了一个全局变量

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

正在寻找第二双眼睛...我缺少什么才能让它正常工作?

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

试试这个..

语句 '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']

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