检查iOS - 为什么这个变量未定义?

时间:2015-03-06 14:12:11

标签: javascript jquery var

我试图根据用户访问的iOS版本来更改页面的行为。

以下是我所拥有的:

    function iOSversion() {
  if (/iP(hone|od|ad)/.test(navigator.platform)) {
    // supports iOS 2.0 and later: <http://bit.ly/TJjs1V>
    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
  }
}

var ver = iOSversion();

if (ver[0] >= 8) {
 alert("using iOS8");
} else if (ver[0] <= 7) {
 alert("using iOS7 or earlier");
}

我得到&#39; TypeError:ver未定义&#39;。

我在这里错过了什么吗?

由于

1 个答案:

答案 0 :(得分:2)

if (/iP(hone|od|ad)/.test(navigator.platform)) {检查失败时,您的方法不会返回任何内容,因此verundefined

function iOSversion() {
  if (/iP(hone|od|ad)/.test(navigator.platform)) {
    // supports iOS 2.0 and later: <http://bit.ly/TJjs1V>
    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
    return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
  } else {
    return [];  //<-- return an empty array and it will not error. 
  }
}

或者在使用if之前检查版本是否有值。

var ver = iOSversion();
if (ver) { /* do it */ }