Використовуємо ASP.NET 4 визначення браузера в ASP.NET 3.5
- Що нового в файлах визначення браузера в ASP.NET 4
- Перевірка налаштувань браузера
- Перераховуємо визначення браузерів
- висновок
Ми оновили файли визначення браузера в ASP.NET 4 , Тепер вони містять інформацію про таких браузерах і пристроях, як Google Chrome і iPhone. Ви можете використовувати файли визначення браузера і в більш ранніх версіях ASP.NET, наприклад в ASP.NET 3.5. Оновлені файли визначення інформації та інструкції по установці можуть бути знайдені тут
Зміни в файлах визначення браузера можуть викликати проблеми зворотної сумісності, якщо ви оновлюєте ASP.NET 3.5 проект до ASP.NET 4. Якщо у вас виникли такі проблеми, то у вас є можливість завантажити старий файли визначення браузера в ASP.NET додаток.
Що нового в файлах визначення браузера в ASP.NET 4
Повний список підтримуваних браузерів в нових файлах визначення ASP.NET 4 можна побачити на наступній діаграмі:
Якщо ви уважно подивитеся на структуру вище, то виявите, що були додані нові браузери такі, як Internet Explorer 8, Firefox 3.5, Google Chrome, Opera 10 і Safari 4.
Більш того, ми додали підтримку найпопулярніших мобільних браузерів: BlackBerry, iPhone, iPod і Windows Mobile (IEMobile). Мобільні пристрої підсвічені в діаграмі фіолетовим кольором. Для поліпшення продуктивність були прибрані застарілі браузери для стільникових і мобільних пристроїв.
Ми так само підчистили інформацію, що міститься в файлах визначення браузера. Кілька прикладів застосування:
Are you a mobile device? <% = Request.Browser.IsMobileDevice%> <br> Are you an IPhone? <% = Request.Browser.MobileDeviceModel == "IPhone"%> <br> What version of JavaScript do you support? <% = Request.Browser [ "javascriptversion"]%> <br> What layout engine do you use? <% = Request.Browser [ "layoutEngine"]%>
Ось, що ми побачимо в Internet Explorer 8:
А це результат в Google Chrome:
Перевірка налаштувань браузера
Коли ви працюєте з файлами визначення браузера, дуже зручно мати можливість перевірити повернулася інформацію, коли ви запитуєте сторінку з різних браузерів. Ви можете використовувати наступний метод для отримання HttpBrowserCapabilities відповідні користувальницької рядку агента і набору заголовків браузера.
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; }
В кінці поста ви знайдете посилання для завантаження простого VS 2008 проекту, Browser Definition Test, який використовує дані методи для відображення інформації про можливості для довільних рядків призначеного для користувача агента. Наприклад, якщо ви введете рядок агента для iPhone, то отримаєте наступний результат:
Додаток Browser Definition Test дозволяє вам відправити рядок агента і вивести таблицю можливостей браузера.
Файли визначення браузера містять приклад рядка агента для кажого браузера. Зараз я взяв рядок агента для iPhone з файлу iphone.browser:
Перераховуємо визначення браузерів
Деякі люди запитують, чи існує спосіб перерахувати всі визначення браузерів. Для цього потрібно скористатися рефлекции і читати приватні властивості.
Файли визначення браузера в папці config \ browsers Парс класом BrowserCapabilitesFactory. Після запуску інструменту aspnet_regbrowsers, ви можете переглянути вихідний код даного класу в директорії config \ browser, відкривши BrowserCapsFactory.cs.
Клас BrowserCapabilitiesFactoryBase містить protected властивість з ім'ям BrowserElements, яке представляє Hashtable всіх определнного браузера. Ось приклад, який показується, як можна вважати і вивести ID всіх визначень браузера:
var propInfo = typeof (BrowserCapabilitiesFactory) .GetProperty ( "BrowserElements", BindingFlags.NonPublic / BindingFlags.Instance); Hashtable browserDefinitions = (Hashtable) propInfo.GetValue (new BrowserCapabilitiesFactory (), null); foreach (var key in browserDefinitions.Keys) {Response.Write ( "<br>" + key); }
Запускаємо програму в VS 2008: Додати
У вас з'явиться величезний список браузерів і пристроїв. Всього їх 449.
Якщо ж запустити проект в VS 2010, то картина трохи інша:
У новій версії, було видалено 19 застарілих визначень.
висновок
Оновлені файли визначення браузера в ASP.NET 4 надають більш точну інформацію про пристроях і браузерах. Якщо ви бажаєте по тестувати нові визначення браузерів з різними призначеними для користувача агентами, тоді я рекомендую вам завантажити проект Browser Definition Test .
Посилання по темі
IsMobileDevice%> <br> Are you an IPhone?MobileDeviceModel == "IPhone"%> <br> What version of JavaScript do you support?
Browser [ "javascriptversion"]%> <br> What layout engine do you use?