2011-09-01 4 views
5

Mam prostą stronę, to struktura jest następująca (pseudo kod):UIWebView i iPhone treść nie ogłaszanie (ASP.NET kwestie funkcji obsługiwanych przez przeglądarki)

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

w dowolnej przeglądarce pulpitu posty DD1 z powrotem i zdarzenie serwera "SelectedIndexChanged" zostało uruchomione. Jednak w przypadku iPhone'a na iPhone'a lub internetowej wersji IPhone nie jest wykonywany odświeżenie. Wiem o tym, ponieważ nie wyświetla się żaden wskaźnik aktywności sieciowej i podpiąłem do witryny debugger, który przechwytuje wszystkie zdarzenia na serwerze i nigdy nie zostaje trafiony. Czasami, mniej więcej raz na 2 godziny, oddzwonienie działa na iPhone, ale niezwykle rzadko i sporadycznie.

Dd1 to lista dat, która ładuje listę rozwijaną w dół, która jest zależna od wybranego elementu na liście dat. Ta forma jest ponownie używana w wielu miejscach i nie chcę zmieniać podstawowej struktury, chyba że jest to ostatni wysiłek.

Javascript jest włączony w ustawieniach Safari.

Wystarczająco proste, prawda? Próbuję dowiedzieć się, jak debugować błędy javascript na stronie internetowej, ale zastanawiałem się, czy ktoś wie, co to za dziwactwo, które stworzyło to zachowanie.

Odpowiedz

7

Agent użytkownika iPhone UIWebView nie został rozpoznany przez ASP.NET 4.0, więc asp.net wyświetlał jako domyślną wersję Downlevel strony, która nie zawierała javascript. Iphones WebView kliencka było:

Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 jak Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1

Aby tego uniknąć, zmieniłem właściwość "ClientTarget" strony na "UpLevel", która omija asp.net, próbując dowiedzieć się, jakie są możliwości przeglądarki i po prostu wyświetla javascript "Uplevel" i wszystko.

Rozwiązanie w moją stronę za Page_Load:

Me.ClientTarget = "uplevel"

lub

this.ClientTarget = "uplevel";

+1

To jest trochę hack. Naprawianie App_Browsers lub aktualizacja globalnej listy przeglądarek jest czystsza. Zobacz obejście opublikowane przez pravav rastogi (działa dla Microsoft) na http://connect.microsoft.com/VisualStudio/feedback/details/631438 – Brian

+0

W komentarzach w tym linku ktoś wspomina, że ​​poprawka zostanie wydana w następnym uruchomieniu asp.net release ... czy to jest poprawione w .net 4.5? –

+0

Przepraszam, ale nie wiem. Możesz spróbować zainstalować i sprawdzić, czy kopia pliku przeglądarki komputera jest aktualizowana. Uruchom różnicę w '\ Windows \ Microsoft.NET \ Framework [X1] \ v [X2] \ Config \ Browsers \ *. – Brian

Powiązane problemy