Добрый день, уважаемые. Я предпочитаю читать топики, в которых освещены не некие абстрактные вещи, а их конкретное применение. Именно поэтому я хочу поделиться своим опытом, полученным при разработке wap-страницы на нашем проекте.
Наш проект базируется на .Net архитектуре. Поэтому вся серверная часть будет на C#.
В один прекрасный день на нашем проекте потребовалось сделать вап-страницу. Причем сделать 2 ее варианта — html и wml. Так как раньше подобными вещами я не занимался, то все было в новинку. Если я буду писать очевидные вещи — не ругайтесь, пожалуйста. Эта статья расчитана на тех, кто не верстает постоянно wap страницы, но иногда такая необходимость возникает.
Что такое html объяснять, думаю, не стоит :)
А вот на wml стоит немного остановиться. Несколько фактов об этом языке разметки:
Подробнее на wiki
Фактически, wml уже нигде не используется. Наступило царствие xhtml :)
Первое, что я уяснил при верстке wap страничек — без доктайпа никуда.
Второе — некоторые телефоны отображают страницу только при полностью валидной верстке.
Как добиться, чтобы телефон отображал вашу уже сверстанную под маленькие экраны страницу?
Нужно чтобы она проходила валидацию!
А для этого нужно определение xml в начало документа. Исходя из личного опыта было выяснено, что если телефон не встречает в начале файла строку (и если этот телефон — Nokia :) )
то показывать страницу он отказывается.
Дальше больше. Нужно указать доктайп.
Для html версии страницы я использовал
А для wml
Далее уже на ваш вкус, только соблюдая валидность верстки. Валидатор всего к вашим услугам.
Как я уже писал, все примеры кода будут на C#.
Первая задача, которая встала передо мной — определить, wap браузер передо мной или нет.
Я написал следующее:
bool WapBrowser=Request.Headers[«Accept»].Contains(«text/vnd.wap.wml»);
Далее определяем поддерживает, ли наш браузер xhtml
bool SupportHTML = Request.Headers[«Accept»].Contains(«text/html»);
Тут тоже все понятно.
Теперь можно построить несколько условий:
if(SupportHTML && WapBrowser)
{
try
{
Server.Transfer(«SampleWapPage.aspx»);
}
catch (Exception ex)
{
//
}
Server.Transfer(«404.aspx»);
}
Как видно, если браузер клиента — wap браузер и он поддерживает html — происходит переход на SampleWapPage.aspx
А если условие не выполняется, просто пытаемся определить wap браузер:
if(WapBrowser)
{
try
{
Server.Transfer(«SampleWapPage.aspx?wml»);
}
catch (Exception ex)
{
//
}
Server.Transfer(«404.aspx»);
}
Как видите, все просто и наглядно.
Удачи в использовании :)
Наш проект базируется на .Net архитектуре. Поэтому вся серверная часть будет на C#.
Преамбула
В один прекрасный день на нашем проекте потребовалось сделать вап-страницу. Причем сделать 2 ее варианта — html и wml. Так как раньше подобными вещами я не занимался, то все было в новинку. Если я буду писать очевидные вещи — не ругайтесь, пожалуйста. Эта статья расчитана на тех, кто не верстает постоянно wap страницы, но иногда такая необходимость возникает.
Немного теории
Что такое html объяснять, думаю, не стоит :)
А вот на wml стоит немного остановиться. Несколько фактов об этом языке разметки:
- Страница начинается и заканичивается тэгом < wml >
- Вся информация заключается в тэги < card >
- Размер страницы не более 4кб
- Не поддерживает css
- Картинки только формата WBMP, то есть черно-белые
Подробнее на wiki
Фактически, wml уже нигде не используется. Наступило царствие xhtml :)
Практика. Клиентская часть
Первое, что я уяснил при верстке wap страничек — без доктайпа никуда.
Второе — некоторые телефоны отображают страницу только при полностью валидной верстке.
Как добиться, чтобы телефон отображал вашу уже сверстанную под маленькие экраны страницу?
Нужно чтобы она проходила валидацию!
А для этого нужно определение xml в начало документа. Исходя из личного опыта было выяснено, что если телефон не встречает в начале файла строку (и если этот телефон — Nokia :) )
<?xml version=«1.0» encoding=«UTF-8»?>
то показывать страницу он отказывается.
Дальше больше. Нужно указать доктайп.
Для html версии страницы я использовал
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" «www.wapforum.org/DTD/xhtml-mobile10.dtd»>
А для wml
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
«www.wapforum.org/DTD/wml_1.1.xml»>
Далее уже на ваш вкус, только соблюдая валидность верстки. Валидатор всего к вашим услугам.
Практика. Серверная часть
Как я уже писал, все примеры кода будут на C#.
Первая задача, которая встала передо мной — определить, wap браузер передо мной или нет.
Я написал следующее:
bool WapBrowser=Request.Headers[«Accept»].Contains(«text/vnd.wap.wml»);
Далее определяем поддерживает, ли наш браузер xhtml
bool SupportHTML = Request.Headers[«Accept»].Contains(«text/html»);
Тут тоже все понятно.
Теперь можно построить несколько условий:
if(SupportHTML && WapBrowser)
{
try
{
Server.Transfer(«SampleWapPage.aspx»);
}
catch (Exception ex)
{
//
}
Server.Transfer(«404.aspx»);
}
Как видно, если браузер клиента — wap браузер и он поддерживает html — происходит переход на SampleWapPage.aspx
А если условие не выполняется, просто пытаемся определить wap браузер:
if(WapBrowser)
{
try
{
Server.Transfer(«SampleWapPage.aspx?wml»);
}
catch (Exception ex)
{
//
}
Server.Transfer(«404.aspx»);
}
Как видите, все просто и наглядно.
Удачи в использовании :)