Тестирование версии браузера - ненадежный метод - многие пользователи не предоставляют эту информацию, а другие говорят вам, что они используют другой браузер, чем на самом деле.Если вам нужны определенные функции, то единственный надежный способ определить, доступны ли они, - это использовать javascript, чтобы увидеть, существуют ли они.
Вы полны решимости перенаправить, а не просто изменить то, что отображается?Потому что изменить содержимое текущей страницы будет гораздо проще.Просто добавьте что-то вроде этого на свою страницу:
<div id='warning'>Your browser sucks!</div>
CSS:
#warning {
/* make this DIV very visible - you could even cover the rest
of the page if your website is useless without javascript. */
}
Теперь страница загрузится с отображенным #warning, и вы можете использовать javascript, чтобы скрыть ее, если требуетсяфункции присутствуют (вы не хотите делать обратное и использовать javascript для его отображения, потому что вы хотите, чтобы он отображался, если ваш скрипт не запускается).Есть много способов сделать это, и самый «стандартный» способ - это присоединить событие onload.Тем не менее, это одна из ситуаций, когда я считаю, что хакерский подход намного лучше.Если вы выполните тест под нагрузкой, то предупреждение будет отображаться до тех пор, пока не будет выполнен javascript, который может составлять от доли секунды до нескольких секунд.Что вы действительно хотите сделать, так это скрыть элемент до того, как он будет отображен, и вы можете сделать это, добавив что-то подобное в раздел <head>
.
if((function() {
var t,u,i,j,
css='textShadow,textStroke,boxShadow,borderRadius,borderImage,opacity'.split(','),
prefixes=',webkit,moz,o,ms,khtml'.split(','),
nPrefixes=prefixes.length,
el=document.createElement('i').style;
styles:for(i=0;t=css[i];i++) {
t=t.charAt(0).toUpperCase()+t.substr(1);
for(j=0;j<nPrefixes;j++) {
u=prefixes[j]+t;
if(el[u.charAt(0).toLowerCase()+u.substr(1)]!==undefined)
continue styles;
}
return false;
}
return true;
})())
document.write("<style type='text/css'>#warning {display:none;}</style>");
Согласно вашему примеру, это предполагает, чтонеобходимыми вам функциями являются textShadow, textStroke, boxShadow, borderRadius, borderImage и opacity.
Вы действительно не должны помещать любой другой javascript в <head>
, так как страница не будет отображаться до тех пор, покаприведенный выше код завершает выполнение.