Вместо того, чтобы обнаруживать устройство или операционную систему, вы должны выполнять обнаружение функций - это обеспечит гораздо более богатый опыт, и вы можете предоставить собственный код для добавления функциональности, которую не поддерживает конкретная версия.Таким образом, вы обеспечите поддержку, выходящую за рамки конкретных устройств, на которые вы ориентируетесь (и обычно это оказывается проще, поскольку вместо того, чтобы ветвить код для конкретного пользовательского агента, вы пополняете поддержку более старых реализаций js, предоставляяпрогнозная поддержка на условной основе).
Например, последняя версия Safari для настольных компьютеров и мобильных устройств не обеспечивает функциональность .bind()
для привязки контекста к замыканию.Это может быть обнаружено и обработано с помощью Function.prototype.bind
и, если оно не существует, обеспечивает реализацию, которая предоставляет функциональность для старых браузеров.Использование библиотеки, такой как http://www.modernizr.com/, очень поможет в этом деле.
При этом есть некоторые конкретные события DOM, которые связаны с определенными версиями iOS: http://developer.apple.com/library/safari/navigation/#section=Libraries&topic=Safari%20DOM%20Additions%20for%20iOS