16 ответов:
да, чтение заголовка User-Agent сделает трюк.
есть немного спискииз там известных мобильных пользовательских агентов, так что вам не нужно начинать с нуля. То, что я сделал, когда мне пришлось, - это создать базу данных известных агентов пользователей и хранить неизвестные, когда они обнаруживаются для пересмотра, а затем вручную выяснить, что это такое. Эта последняя вещь может быть излишней в некоторых случаях.
Если вы хотите сделать это на уровне Apache, вы можете создать скрипт, который периодически генерирует набор правил перезаписи проверки пользовательского агента (или просто один раз и забыть о новых пользовательских агентов, или один раз в месяц, что подходит для вашего случая), как
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (OneMobileUserAgent|AnotherMobileUserAgent|...) RewriteRule (.*) mobile/который будет двигаться, например, запросы к http://domain/index.HTML-код до http://domain/mobile/index.HTML-код
Если вам не нравится подход, при котором сценарий периодически воссоздает файл htaccess, вы можете написать модуль, который проверяет пользователя Агент (я не нашел один уже сделанный, но нашел это особенно подходящим пример) и получают агенты пользователей с некоторых сайтов, чтобы обновить их. Тогда вы можете усложнить подход столько, сколько хотите, но я думаю, что в вашем случае предыдущий подход будет в порядке.
есть скрипты с открытым исходным кодом на Обнаружение Мобильного Браузера которые делают это в Apache, ASP, ColdFusion, JavaScript и PHP.
просто мысль, но что, если вы работали над этой проблемой с противоположного направления? Вместо того, чтобы определять, какие браузеры являются мобильными, почему бы не определить, какие браузеры не являются? Затем Закодируйте свой сайт по умолчанию в мобильную версию и перенаправьте на стандартную версию. Есть две основные возможности при просмотре мобильного браузера. Либо он имеет поддержку JavaScript или нет. Так что если браузер не поддерживает JavaScript, он будет по умолчанию в мобильной версии. Если это так поддержку JavaScript, проверьте размер экрана. Все, что ниже определенного размера, скорее всего, также будет мобильным браузером. Все, что больше будет перенаправлено на ваш стандартный макет. Тогда все, что вам нужно сделать, это определить, является ли пользователь с отключенным JavaScript мобильным или нет.
Согласно W3C количество пользователей с отключенным JavaScript составляло около 5%, и из этих пользователей большинство отключили его, что означает, что они действительно знают, что они делают с браузером. Они большую часть вашей аудитории? Если нет, то не беспокойтесь о них. Если да,то каков наихудший сценарий? У вас есть те пользователи, которые просматривают мобильную версию вашего сайта, и это хорошо.
вот как я это делаю в JavaScript:
function isMobile() { var index = navigator.appVersion.indexOf("Mobile"); return (index > -1); }Смотрите пример на www.tablemaker.net/test/mobile.html где он утрояет размер шрифта на мобильных телефонах.
мой любимый механизм обнаружения мобильного браузера WURFL. Он часто обновляется и работает со всеми основными платформами программирования/языка.
вы рассматривали возможность использования CSS3 медиа-запросов? В большинстве случаев вы можете применить некоторые стили css специально для целевого устройства без необходимости создавать отдельную мобильную версию сайта.
@media screen and (max-width:1025px) { #content { width: 100%; } }вы можете установить ширину на все, что вы хотите, но 1025 поймает ландшафтный вид iPad.
вы также хотите добавить в свою голову следующий мета-тег:
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">проверить в этой статье на HTML5 скалы для некоторых хороших примеры
на ANDROID, IPHONE, IPAD, BLACKBERRY, PALM, WINDOWS CE, PALM
<script language="javascript"> <!-- var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase())); if (mobile) { alert("MOBILE DEVICE DETECTED"); document.write("<b>------------------------------------------<br>") document.write("<b>" + navigator.userAgent + "<br>") document.write("<b>------------------------------------------<br>") var userAgent = navigator.userAgent.toLowerCase(); if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1)) document.write("<b> ANDROID MOBILE <br>") else if ((userAgent.search("android") > -1) && !(userAgent.search("mobile") > -1)) document.write("<b> ANDROID TABLET <br>") else if ((userAgent.search("blackberry") > -1)) document.write("<b> BLACKBERRY DEVICE <br>") else if ((userAgent.search("iphone") > -1)) document.write("<b> IPHONE DEVICE <br>") else if ((userAgent.search("ipod") > -1)) document.write("<b> IPOD DEVICE <br>") else if ((userAgent.search("ipad") > -1)) document.write("<b> IPAD DEVICE <br>") else document.write("<b> UNKNOWN DEVICE <br>") } else alert("NO MOBILE DEVICE DETECTED"); //--> </script>
файл браузера мобильного устройства является отличным способом для обнаружения мобильных (и других) broswers для ASP.NET проекты:http://mdbf.codeplex.com/
вы можете обнаружить мобильных клиентов просто через
navigator.userAgent, и загрузить альтернативные сценарии на основе обнаруженного типа клиента как:$(document).ready(function(e) { if(navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i)) { //write code for your mobile clients here. var jsScript = document.createElement("script"); jsScript.setAttribute("type", "text/javascript"); jsScript.setAttribute("src", "js/alternate_js_file.js"); document.getElementsByTagName("head")[0].appendChild(jsScript ); var cssScript = document.createElement("link"); cssScript.setAttribute("rel", "stylesheet"); cssScript.setAttribute("type", "text/css"); cssScript.setAttribute("href", "css/alternate_css_file.css"); document.getElementsByTagName("head")[0].appendChild(cssScript); } else{ // write code for your desktop clients here } });
вы можете проверить строку User-Agent. В JavaScript это очень просто, это просто свойство объекта навигатора.
var useragent = navigator.userAgent;Вы можете проверить, если устройство, если iPhone или Blackberry в JS с чем-то вроде
var isIphone = !!agent.match(/iPhone/i), isBlackberry = !!agent.match(/blackberry/i);Если isIphone верно вы получаете доступ к сайту с Iphone, если isBlackBerry вы получаете доступ к сайту с Blackberry.
вы можете использовать плагин" UserAgent Switcher " для firefox, чтобы проверить это.
Если вы не также интересно, может быть стоит проверить мой скрипт " redirection_mobile.ОАО" размещено на github здесь https://github.com/sebarmeli/JS-Redirection-Mobile-Site и вы можете прочитать более подробную информацию в одной из моих статей здесь:
protected void Page_Load(object sender, EventArgs e) { if (Request.Browser.IsMobileDevice == true) { Response.Redirect("Mobile//home.aspx"); } }этот пример работает в asp.net
вы не сказали, Какой язык вы используете. Если это Perl, то это тривиально:
use CGI::Info; my $info = CGI::Info->new(); if($info->is_mobile()) { # Add mobile stuff } unless($info->is_mobile()) { # Don't do some things on a mobile }
да user-agent используется для обнаружения мобильных браузеров. Есть много бесплатных скриптов, доступных для проверки. Вот один такой php код, который поможет вам перенаправлять мобильных пользователей на другой сайт.
Я поставил эту демонстрацию со скриптами и примерами, включенными вместе:
http://www.mlynn.org/2010/06/mobile-device-detection-and-redirection-with-php/
этот пример использует функции php для обнаружения агента пользователя и предлагает дополнительное преимущество, позволяющее пользователям указывать предпочтения для версии сайта, которая обычно не будет по умолчанию на основе их браузера или типа устройства. Это делается с помощью cookies (поддерживается с помощью php на на стороне сервера, в отличие от яваскрипта.)
Не забудьте проверить ссылку для загрузки в статье для примеров.
Надеюсь, вам понравится!
MobileESP имеет PHP, Java, APS.NET (C#), Ruby и JavaScript крючки. он также имеет лицензию Apache 2, поэтому бесплатно для коммерческого использования. Ключевая вещь для меня-это только идентификация браузеров и платформ, а не размеры экрана и другие показатели, что делает его приятным маленьким.
есть совершенно новое решение с использованием Zend Framework. Начните со ссылки на Zend_HTTP_UserAgent:
Comments