use*_*455 1 javascript user-agent ios
我正在尝试使用以下脚本来检测浏览器是否为iOS 5或更高版本(来自此SO线程使用JavaScript检测iOS版本少于5).
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.');
}
Run Code Online (Sandbox Code Playgroud)
它适用于iOS 5或更高版本,但在任何其他浏览器中它会产生以下错误:
Uncaught TypeError: Cannot read property '0' of undefined
Run Code Online (Sandbox Code Playgroud)
然后,此脚本下面的所有JavaScript都会失败.
有人可以建议我怎么解决这个问题?谢谢.
您正在检查是否ver[0] >= 5,但如果不是iOS,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.');
}
Run Code Online (Sandbox Code Playgroud)