Використання файлів опису браузерів в ASP.NET 4.0, Різне, Програмування, статті

У ASP.NET 4.0 додана інформація про сучасні браузерах та пристроях.


Повний список браузерів і пристроїв виглядає таким чином:



Для збільшення продуктивності інформація про старі браузерах та пристроях була вилучена. Наприклад, ASP.NET 4.0 не підтримує інформацію про Netscape Navigator і Internet Explorer версій нижче 6.


Файли опису браузерів і їх можливостей (Browser Definition Files and Browser Capabilities)


ASP.NET зберігає інформацію у файлах, які називаються файлами опису браузера. Ці файли є звичайними XML файлами, які легко можна переглянути в Notepad.


У ASP.NET 3.5 ці файли розміщувалися в наступній директорії:


              WindowsMicrosoft.NETFrameworkv2.0.50727CONFIGBrowsers


У ASP.NET 4.0 файли знаходяться в директорії:


              WindowsMicrosoft.NETFrameworkv4.xxxCONFIGBrowsers


Кожен файл опису браузера містить набір властивостей. Наприклад, файл firefox.browser містить інформацію про Firefox 3 і Firefox 3.5.


Додаткову інформацію про структуру файлів опису браузера можна отримати за посиланням http://msdn.microsoft.com/en-us/library/ms228122.aspx.


Об’єкт HttpBrowserCapabilities, який можна отримати з властивості Request.Browser використовує файли опису для визначення браузера клієнта і повертає інформацію про його можливості. Наприклад, за допомогою властивості Request.Browser.Cookies можна перевірити чи підтримує поточний браузер куки чи ні.


Такі елементи управління, як Menu і TreeView використовують інформацію про можливості браузера для коректного відображення розмітки. Наприклад, отриманий HTML код для TreeView в браузерах, які підтримують JavaScript, буде істотно відрізнятися від коду, отриманого для браузерів, не підтримує JavaScript.


Використання файлів опису браузерів з ранніми версіями ASP.NET


Нові файли можна використовувати і в ранніх версіях ASP.NET (наприклад, в проектах, написаних на ASP.NET 3.5). Це може бути необхідно, якщо ви хочете працювати з Google Chrome або iPhone.


Для використання файлів в ранніх версіях ASP.NET слідуйте цій інструкції:



  1. Замініть файли в папці WindowsMicrosoft.NETFrameworkv2.0.50727CONFIG на нові файли (їх можна скачати внизу статті).
  2. Відкрийте Visual Studio Command Prompt і виконайте команду: aspnet_regbrowsers-i.
  3. Скомпілюйте ваш додаток (Build, Rebuild).

Після виконаних дій ваш додаток буде використовувати нові файли опису браузерів.


Використання файлів опису браузерів версії ASP.NET 3.5в ASP.NET 4.0


Так як файли опису браузерів в ASP.NET 4.0 відрізняються від більш ранніх версій, то при оновленні проекту з ASP.NET 3.5 до ASP.NET 4.0 може привести до проблем сумісності. В такому випадку використання старих файлів в ASP.NET 4.0 проектах може мати сенс.


Для цього вам необхідно виконати наступні дії:



  1. Замініть файли в папці WindowsMicrosoft.NETFrameworkv4.xxxCONFIG на старі файли (їх можна скачати внизу статті).
  2. Відкрийте Visual Studio Command Prompt і виконайте команду: aspnet_regbrowsers-i.
  3. Скомпілюйте ваш додаток (Build, Rebuild).

Після виконаних дій ваш додаток буде використовувати старі файли опису браузерів.


Користувача файли опису браузерів


Також ви можете створити користувача файли опису браузерів для конкретного ASP.NET додатки шляхом додавання файлів в папку App_Browsersвашего програми.


Якщо ваше програми містить користувача файли, які успадковуються від файлів, які були видалені, ви побачите помилку. Наприклад, якщо в папці App_Browsers міститься файл, успадкований від файлу опису браузера IE2, то ви отримаєте помилку:


The browser or gateway element with ID “IE2” cannot be found.


На наступній діаграмі показані взаємозв’язки між усіма файлами опису браузерів. Більшість файлів за винятком Opera і BlackBerry успадковуються від файлу опису браузера Mozilla.



Визначення версії файлу опису браузера


Ви можеьте опрежеліть версію використовуваного додатком файлу для тестування в різних браузерах:


<%=Request.Browser.Id %>


Якщо ви відкриєте веб-сторінку в Microsoft Internet Explorer 8 (і при цьому використовуєте нові файли), то ви побачите ідентифікатор ie8. В іншому випадку, якщо ви використовуєте старі файли, ви побачите ідентифікатор ie6to9 .


Тестування можливостей браузерів


Наступний приклад перевіряє деякі властивості браузера:


Мобільний пристрій?
<%=Request.Browser.IsMobileDevice %> 
  
Ви – iPhone?
<%=Request.Browser.MobileDeviceModel == “IPhone” %> 
  
Яку версію JavaScript ви підтримуєте?
<%=Request.Browser[“javascriptversion”] %>


Для тестування можливостей браузерів і отримання їх властивостей розглянемо наступний приклад:

        public HttpBrowserCapabilities GetBrowserCapabilities(string userAgent, NameValueCollection headers)
{
HttpBrowserCapabilities browserCaps = new HttpBrowserCapabilities();
Hashtable hashtable = new Hashtable(180, StringComparer.OrdinalIgnoreCase);
hashtable[string.Empty] = userAgent; // The actual method uses client target
browserCaps.Capabilities = hashtable;
var capsFactory = new System.Web.Configuration.BrowserCapabilitiesFactory();
capsFactory.ConfigureBrowserCapabilities(headers, browserCaps);
capsFactory.ConfigureCustomCapabilities(headers, browserCaps);
return browserCaps;
}

На вхід функція GetBrowserCapabilities отримує значення рядка UserAgent і колекцію заголовків, а на виході – заповнений об’єкт HttpBrowserCapabilities.


Використовуємо рядок iPhone UserAgent:


             Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3


C допомогою наступної нескладної функції форматіруем інформацію з властивостями браузера (тестове додаток можна скачати внизу статті):


        private string RenderCapsTable(HttpBrowserCapabilities caps)
        {
            var sb = new StringBuilder();
            sb.Append(“<table>”);

            string[] keys = caps.Capabilities.Keys.OfType<string>().OrderBy(k => k).Select(k => k).ToArray();

            foreach (string key in keys)
            {
                sb.AppendFormat(“<tr><th>{0}</th><td>{1}</td></tr>”, key, caps[key]);
            }

            sb.Append(“</table>”);
            return sb.ToString();
        }


І отримуємо на виході:



Висновок


Таким чином, файли опису браузерів є зручним засобом ідентифікації браузерів і їх можливостей і може бути використаний для видачі різного HTML коду в залежності від типу пристрою, чт оявляется актуальним завданням у зв’язку більшого поширення мобільних пристроїв.


Сторінка проекту: http://aspnet.codeplex.com/releases/view/41420


Архів для скачування містить наступні файли:


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*