W trzech odcinkach zaprezentuję trzy sposoby na zmuszenie MS Ajax (UpdatePanel) do bezproblemowego działania w Google Chrome i Safari 3.0.
Przedstawienie problemu
Zarówno Google Chrome, jak i Safari 3.0 przedstawiają się jako “WebKit”. Microsoftowy framework do Ajaxa nie jest na to do końca przygotowany. Zdarzają się sytuacje, w których przeglądarki te “zawieszają się” bądź w inny sposób działają nie tak jak byśmy chcieli. Zidentyfikować taki przypadek można w bardzo prosty sposób:
- w innych przeglądarkach wszystko działa jak należy
- usunięcie UpdatePanela eliminuje problemy
Nie udało mi się przygotować odizolowanego scenariusza obrazującego omawianą kwestię – nie wiem co powoduje takie zachowanie, a najprostsze stronki działają jak trzeba. Umieszczenie całego kontekstu z kolei mija się z celem. Przyjmijmy zatem, że “czasami tak po prostu jest”:). Po szczegóły zapraszam do posta ASP.NET AJAX Compatibility Patch for Safari 3.x and Google Chrome. Nie będę kopiował tu samego rozwiązania, więc jego przeczytanie jest w zasadzie konieczne do zrozumienia problemu. Skupię się natomiast na możliwych sposobach implementacji tego fixa (biorąc pod uwagę fakt, że możemy mieć wiele ScriptManagerów w naszym projekcie).
Odcinek pierwszy. Metoda kopiuj/wklej.
Metoda prosta jak budowa cepa. Wielokrotnie nadużywana do wszelkiego typu zadań. Prymitywna i godna potępienia. Rozwiązanie:
- szukamy w całym projekcie tekstu <asp:ScriptManager
- modyfikujemy tag, wstawiając do środka wymagany tekst:<Scripts>
<asp:ScriptReference Path=”~/Scripts/webkit.js” />
<Scripts>
I jesteśmy w domu. Następnym razem spojrzymy na bardziej wyrafinowane podejście do problemu: wykorzystamy moduł HTTP do modyfikacji ScriptManagerów w jednym centralnym miejscu.
thanks for information sharing with me.
thanks for information sharing with me.