有条件的不能正常工作



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

我使用一个名为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。

正在寻找第二双眼睛。。。为了让它正常工作,我缺少了什么?

语句'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')) 
alert('Your browser is not supported.')

试试这个。。

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

最新更新