Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Содержимое UIWebview и IPhone не выполняет обратную передачу (проблемы с возможностями браузера ASP.NET)

Автор вопроса: Chuck PinkertОтветов: 1

У меня есть простая страница, ее структура выглядит следующим образом (псевдокод):

<aspx page>
    <ascx control>
        <asp:dropdownlist id="dd1" autoPostback=true />
        <asp:dropdownlist id="dd2" />
    </ascx control>
</aspx page>

В ЛЮБОМ настольном браузере dd1 отправляет ответ и запускается событие сервера "SelectedIndexChanged". Однако в сафари IPhone или веб-просмотре IPhone обратная передача не выполняется. Я знаю это, потому что индикатор сетевой активности не отображается, и я подключил отладчик к сайту, который перехватывает все события на стороне сервера, и он никогда не срабатывает. Иногда, примерно раз в 2 часа, постбэк на айфоне УЖЕ работает, но крайне редко и с перебоями.

Dd1 - это раскрывающийся список дат, который загружает раскрывающийся список временных интервалов, зависящий от выбранного элемента в раскрывающемся списке дат. Эта форма повторно используется во многих местах, и я не хочу менять базовую структуру, если это не последнее усилие.

Javascript включен в настройках сафари.

Достаточно просто, верно? Я пытаюсь понять, как отлаживать ошибки javascript в веб-просмотре, но мне было интересно, знает ли кто-нибудь, что за странность создала такое поведение.

iphonesafariuiwebview

Ответы

Ответ 1 · рейтинг 7 · Chuck Pinkert

Пользовательский агент IPhone UIWebView не распознавался ASP.NET 4.0, поэтому asp.net использовался по умолчанию, версия страницы нижнего уровня, которая не включала javascript. Пользовательский агент веб-просмотра iphones был:

Mozilla/5.0 (iPhone; U; ЦП iPhone OS 4_3_5, как Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, например, Gecko) Mobile/8L1

Чтобы этого не произошло, я изменил свойство "ClientTarget" страницы на "UpLevel", которое обходит asp.net, пытающийся выяснить возможности браузера, и просто обслуживает версию javascript "Uplevel" и все такое.

Решение на моей странице Page_Load:

Me.ClientTarget = "уровень выше"

or

this.ClientTarget = "уровень выше";

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы