对象检测是避免浏览器问题的最佳助手。不依赖浏览器种类和版本,依赖浏览器能力,一旦知道访问者的浏览器支持某些对象,就能安全启动脚本。
function isCompatible(other) {
// 使用能力检测来检测是否支持某些对象
if( other===false
|| !Array.prototype.push
|| !Object.hasOwnProperty
|| !document.createElement
|| !document.getElementsByTagName
) {
alert('TR- if you see this message isCompatible is failing incorrectly.');
return false;
}
return true;
}
使用对象检测的原则是:标准优于专有方法,先检查W3C的标准,再检查特定浏览器的专有方法。
很多情况下,尽量使用对象检测方法,因为其向前兼容性好。而浏览器检测,一来浏览器版本很多,解决了现有问题,但是将来还会有新的浏览器种类,或者新的浏览器版本,支持更多的属性和方法,但是现有脚本的检测程序又限制了这些新的种类,这样的浏览器检测向前兼容性不好。