1

次のスクリプトを使用して、ブラウザーが iOS 5 以上であるかどうかを検出しようとしています (この SO スレッドDetect iOS version less than 5 with JavaScriptから)。

function iOSversion() {
    if (/iP(hone|od|ad)/.test(navigator.platform)) {
        var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
        return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
    }
}

ver = iOSversion();

if (ver[0] >= 5) {
    alert('This is running iOS 5 or later.');
} else {
    alert('This is NOT running iOS 5 or later.');
}

iOS 5 以降では正常に動作しますが、他のブラウザーでは次のエラーが発生します。

Uncaught TypeError: Cannot read property '0' of undefined 

そして、このスクリプトの下のすべての JavaScript が失敗します。

誰かがこれを修正する方法をアドバイスできますか?? ありがとうございました。

4

2 に答える 2

5

かどうかを確認していますが、 ver[0] >= 5iOS でない場合verは未定義であるため、最初に定義されているかどうかを確認する必要があります。

function iOSversion() {
    if (/iP(hone|od|ad)/.test(navigator.platform)) {
        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 && ver[0] >= 5) {
    alert('This is running iOS 5 or later.');
} else {
    alert('This is NOT running iOS 5 or later.');
}
于 2013-08-02T14:29:31.787 に答える
0

iOSversion()undefined他のブラウザの場合は戻ります。

しようとしています:undefined[0]あなたが得たエラーをあなたに与えるでしょう。

チェックを次のように変更できます。

if (ver !== undefined && ver[0] >= 5) {
    // ..
}
于 2013-08-02T14:29:46.643 に答える