До тех пор, пока существуют различия в работе JavaScript на разных браузерах, мы пожалуй будем вынуждены определять, с каким именно клиентом мы имеем дело. А поскольку JavaScript должен быть как можно компактней, то и код, выполняющие такое определение также должен быть максимально сжат. Сегодня я не без удовольствия нашел статью, в которой описано как это можно сделать очень просто и компактно.
Итак, по очереди для каждого браузера:
Firefox 2/3:
// Firefox 2/3
FF=/a/[-1]=='a'
// Firefox 3
FF3=(function x(){})[-5]=='x'
// Firefox 2
FF2=(function x(){})[-6]=='x'
Internet Explorer 6/7/8:
IE='\v'=='v'
Safari:
Saf=/a/.__proto__=='//'
Chrome
Chr=/source/.test((/a/.toString+''))
Opera
Op=/^function \(/.test([].sort)
Ну и конечно же можно сложить все это в одну строку:
B=(function x(){})[-5]=='x'?'FF3':(function x(){})[-6]=='x'?'FF2':/a/[-1]=='a'?'FF':'\v'=='v'?'IE':/a/.__proto__=='//'?'Saf':/s/.test(/a/.toString)?'Chr':/^function \(/.test([].sort)?'Op':'Unknown'
Спонсор статьи:
Интернет Магазин Бытовой Техники – pioneer одесса
Энергосистемы: когенерационные и энергетические установки, газовые мини электростанции, купить электростанцию
Наркологическая клиника "Полинар" – кодирование от алкоголя
Интернет Магазин Бытовой Техники – pioneer одесса
Энергосистемы: когенерационные и энергетические установки, газовые мини электростанции, купить электростанцию
Наркологическая клиника "Полинар" – кодирование от алкоголя
