2011-02-01 3 views
0

Привет
В JavaScript, как я могу выполнить ту же функцию, что и код (PHP) ниже?JavaScript - Позвонить css файл/код css из javascript

<?php 
if (strpos($_SERVER["HTTP_USER_AGENT"], 'Chrome') == true) { 
    echo "<style>h1 { color: red; }</style>"; 
} 
?> 
+1

Здесь есть много хороших ответов, все в зависимости от того, что вы ищете. Думаю, если бы вы уточнили свой вопрос, было бы легче выбрать правильный ответ. (например, почему вам нужно обнаружить определенный браузер? Вместо этого вы хотели обнаружить функцию браузера (например, геолокацию или локальное хранилище?)) – Moses

+0

Я также вижу, что больше людей уходят от обнаружения браузеров/версий, потому что их так много хотел бы поддержать и отслеживать все эти функции для каждого браузера, может стать беспорядочным. Вместо этого лучше использовать обнаружение функции. jQuery некоторое время назад двигался в этом направлении. –

ответ

0

использовать Modernizr скрипт, чтобы сделать функцию обнаружения для вас, то изменить код CSS, чтобы воспользоваться дополнительными классами.

+0

Работает ли он для мобильного телефона, такого как Android, iPhone и так далее? –

+1

Modernizr использует другой подход. Он проверяет, поддерживает ли текущий браузер определенные функции, а не поддерживает базу данных браузеров, соответствующих функциям. Если вы хотите определить конкретный браузер, Modernizr не будет работать для вас. Если вы хотите воспользоваться некоторыми функциями независимо от браузера, то он отлично работает. –

0
if (navigator.userAgent.indexOf('Chrome') > -1) 
    document.write("<style type=\"text/css\">h1 { color: red; }</style>"); 

Другой вариант, короче

navigator.userAgent.indexOf('Chrome') > -1 ? 
     document.write("<style type=\"text/css\">h1 { color: red; }</style>") : ""; 
+0

kudos на точный эквивалент, но я не могу найти его во мне, чтобы перевернуть очень плохую практику, такую ​​как обнаружение useragent навигатора. –

+0

@nathan вы пишете. Насколько помните, обнаружение браузера немного неопределенно, потому что оно основано на заголовках, которые можно переопределить. – Bakudan

0

На СВА rtphone, все немного сложнее, поскольку разные версии браузера ведут себя по-разному с javascript/css. Например, браузер Android не поддерживает html5 до android os 2.0, а в более поздних версиях os поддерживает HTML-тег html5, но не тег аудио. Аналогичным образом существуют вариации на мобильном сафари. Таким образом, лучший способ - посмотреть на строку user-agent и проанализировать его для версий os/platform/os и действовать соответственно. Я написал небольшую функцию для извлечения некоторой информации из пользовательского агента браузера.

var agentInfo=(function(){ 
    var info={}, 
    ua=navigator.userAgent.split(/[()]/)[1].split(/;/); 
    info.platform=ua[0] && ua[0].toLowerCase(); 
    info.version=ua[2] && ua[2].match(/[0-9._]+/g)[0]; 
    info.os=ua[2] && (temp=ua[2].match(/[^0-9_.]+/g)[0].toLowerCase()) && (temp=/(windows)|(linux)|(mac)|(iphone)|(android)/.exec(temp)) && temp[0]; 
    return info; 
})();
Теперь, основываясь на os/platform/version, вы можете написать соответствующий css.