Раньше вы добавляли хаки в свой JavaScript, чтобы определить, какой браузер использовал клиент, и запускать код на его основе. Похоже, что не было лучшего способа сделать это, поэтому каждая книга имела свою реализацию.
Во многих старых книгах вы найдете код для определения браузера, а затем в коде вы увидите такие вещи, как:
if (NS4) {
} elseif (IE) {
}
Но в значительной степени это уже устарело.
Еще одна важная вещь, которую мы имеем сейчас, - это фреймворки, такие как JQuery, которые стремятся абстрагироваться от нескольких существующих несовместимостей, которые все еще существуют. Мне кажется, в прошлом люди просто катали свои собственные фреймворки JQuery-esq в стиле, чтобы не было единой, принятой большим сообществом.
Была выпущена одна из моих любимых цитат о строках пользовательских агентов, поставляемых с Chrome:
"И поэтому Chrome использовал WebKit, и
притворился Safari и WebKit
притворился ХТМЛ, а ХТМЛ
притворился гекконом, и все
браузеры притворились Mozilla, и
Chrome называл себя Mozilla / 5.0
(Windows; U; Windows NT 5.1; ru-ru)
AppleWebKit / 525.13 (KHTML, как Gecko)
Chrome / 0.2.149.27 Safari / 525.13 и
строка пользовательского агента была полной
беспорядок и почти бесполезный, и все
сделал вид, что все остальные, и
путаницы было много. "
Это хорошая комедия - http://webaim.org/blog/user-agent-string-history/