Возможно, так и должно быть, это зависит от того, чего они пытаются достичь.
Но это просто демонстрирует, почему браузер обнаружение приобрело дурную славу в пользу функции обнаружение.Код распознавания браузера быстро невероятно .Обнаружение функций, с другой стороны, не зависит от времени.
Например: I может проверить, является ли браузер IE, и, если это так, предположить, что браузер не имеетArray.prototype.indexOf
.Но потом приходит IE9 и добавляет его, но, как кружка, я все еще использую свою собственную версию, потому что я думаю, что у IE нет ее.Намного лучше проверить, существует ли он в реализации, на которой я работаю, без особой заботы о том, какой это бренд.И, конечно, функция обнаружения будет работать с браузером, о котором я никогда не слышал;Обнаружение в браузере завершится неудачно и откажется от некоторого совершенно произвольного «по умолчанию».
Иногда это не так просто, как при if (Array.prototype.indexOf)
, но обычно это возможно.У Юрия Зайцева ( kangax ) есть большой список функций обнаружения функций.
(Примечание: почти 1023 * все браузеры утверждают (на некотором уровне)) что они "Mozilla", потому что некоторые сайты предпочитают браузеры Netscape (да, это было давно) браузерам Microsoft, и для проверки проверяют браузер.)