Мобильный браузер игнорирует области разметки и скриптов (Webkit, Android) - PullRequest
0 голосов
/ 24 января 2011

Я работаю над веб-приложением (приложение C # MVC), в котором механизм просмотра отображает другую страницу представления, когда обнаруживает мобильный браузер. В частности, я ориентируюсь на браузер веб-набора Android (на Froyo). Странно, но страница правильно отображает на iPhone.

Проблема в том, что когда я тестирую локально на эмуляторе, он отрисовывается нормально, а если я использую Chrome на рабочем столе, он отрисовывается нормально ... однако, когда я тестирую на реальном телефоне (Nexus 1 и MyTouch), разметка игнорируется, и все текстовые узлы отображаются как текст. Это происходит с использованием HTML5 DOCTYPE (даже с использованием самой простой разметки). Если я вставлю атрибут xmlns в тег (xmlns = "http://www.w3.org/1999/xhtml")), он будет обращать внимание на разметку, но это связано с ее собственным набором проблем (в частности, кажется, что он не работает с JQuery Moblie), и я бы сильно предпочитаю опускать пространство имен.

Кроме того, просто как выстрел в темноте я явно установил тип содержимого на text / html, чтобы посмотреть, поможет ли это, но не повезло. Я уверен, что вы все поняли это, когда я сказал, что пишу это на C #, но веб-сервер - IIS.

Даже эта простая разметка не работает:

<html>
<head>
<title>html5 test for android</title>
</head>
<body>
<h1>h1 markup</h1>
<h2>h2 markup</h2>

<p>this is a paragraph of text</p>
</body>
</html>

Я новичок в области разработки мобильных веб-приложений, так что я надеюсь, что это такая простая и бездумная проблема, о которой знают все, кроме меня (вот почему мне не повезло найти какое-либо направление на в Интернете).

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 27 января 2011

Проблема оказалась в использовании файла mobile.browser (из CodePlex). Файл указывал серверу, что предпочтительным типом пантомимы для моего браузера Android является application / xhtml + xml, а не text / html. Установка типа содержимого в методе действия контроллера не устранила проблему. В итоге мы явно установили тип содержимого в директиве page. Вероятно, мы еще вернемся к этому решению, чтобы определить, является ли файл mobile.browser чем-то, что мы будем продолжать использовать.

0 голосов
/ 25 января 2011

Веб-браузеры Android должны иметь возможность использовать HTML5. Приведенный выше код просто старый HTML. Вы должны поместить туда тип документа HTML5 следующим образом:

Если это все еще не работает, я думаю, у вас есть некоторые проблемы с перехватом возможностей браузера в ASP.NET. Что касается jQuery, если браузер может поддерживать HTML5, вы также можете попробовать использовать полноценный jQuery. Я знаю, что он работает с телефоном Android, потому что я тестировал его на симуляторе Android. Попробуйте сначала изучить возможности браузера ASP.NET, потому что он мог бы снизить возможности браузера веб-набора Android, если ASP.NET не может определить, с каким браузером и / или устройством он имеет дело. Кроме этого, вы можете попробовать написать несерверную страницу (обычный файл HTML) и посмотреть, правильно ли отображается эта страница. Кроме того, попробуйте использовать обычную версию jQuery 1.4.x, а не мобильную версию.

...