Содержимое UIWebview и IPhone не отправляется обратно (проблемы с возможностями браузера ASP.NET) - PullRequest
5 голосов
/ 01 сентября 2011

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

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

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

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

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

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

1 Ответ

7 голосов
/ 07 сентября 2011

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

Mozilla / 5.0 (iPhone; U; CPU 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 = "uplevel"

или

this.ClientTarget = "uplevel";

...