2012-07-06 15 views
24

Przeglądarka Android, od wersji 2.2, obsługuje stałe pozycjonowanie, przynajmniej w pewnych okolicznościach, na przykład gdy skalowanie jest wyłączone. Mam prosty plik HTML bez JS, ale ustalone pozycjonowanie na trzech telefonach Samsung, które wypróbowałem, jest po prostu błędne. Zamiast prawdziwego ustalonego pozycjonowania nagłówek przewija się poza obszar widoku, a po przewinięciu pojawia się ponownie.Włączanie rzeczywistego, stałego pozycjonowania w przeglądarkach Samsung Android

To nie dzieje się w emulatorze Android SDK dla żadnej testowanej przeze mnie konfiguracji (2.2, 2.3, 2.3 x86, 4.0.4). Nie dzieje się tak również podczas korzystania z WebView w aplikacji na telefony Samsung: w takich przypadkach pozycjonowanie działa zgodnie z oczekiwaniami.

Czy istnieje sposób, aby w przeglądarce Samsung "fotografia" używać rzeczywistego stałego pozycjonowania?

Przetestowałem: 1. Galaxy 551 Android 2,2 2. Galaxy S Android 2,3 3. Galaxy S II Android 2,3

Kod próbki:

<html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no,width=device-width,height=device-height"> 
    <style> 
    h1 { position: fixed; top: 0; left: 0; height: 32px; background-color: #CDCDCD; color: black; font-size: 32px; line-height: 32px; padding: 2px; width: 100%; margin: 0;} 
    p { margin-top: 36px; } 
    </style> 
    </head> 
    <body> 
    <h1>Header</h1> 
    <p>Long text goes here</p> 
    </body> 
</html> 

Spodziewanym zachowaniem jest to, że szary nagłówek wypełnia górną część ekranu i pozostaje ustawiony niezależnie od tego, jak bardzo przewijasz. W przeglądarkach Samsung na Androida wydaje się, że przewija się poza obszar widoku, po czym przewija się ponownie po przewinięciu, tak jakby symulowane było pozycjonowanie ustalające za pomocą JavaScriptu, którego nie ma.

Edytuj Sądząc po komentarzach i "odpowiedziach" wydaje się, że być może nie było jasne, czego potrzebuję. Szukam metatagu lub reguły css/hack lub javascript, co wyłącza zepsute pozycjonowanie Samsunga i włącza stałe pozycjonowanie przeglądarki Android. Nie szukam rozwiązania JavaScript, które dodaje zepsute ustalone położenie do przeglądarki, która nie ma żadnego wsparcia; Samsung ustalone pozycjonowanie robi to już, to po prostu wygląda głupio.

+0

Czy masz odniesienie do „Android przeglądarce, od 2.2, wspiera pozycjonowanie stałe”? – deefour

+0

@Deefour Emulator Androida w SDK potwierdza to, o czym wspomniałem w moim poście. –

+0

[caniuse] (http://caniuse.com/css-fixed) mówi, że <3.0 ma tylko częściowe wsparcie, a artykuł [odnośnik] (http://bradfrostweb.com/blog/mobile/fixed-position/) mówi "Android 2.2 niezgrabnie zatrzaskuje naprawione elementy z powrotem w pozycji po zakończeniu przewijania.". Poszukiwanie czegoś, co potwierdza to, co widzisz w SDK, jest oczekiwanym zachowaniem, tak jak się wydaje przynajmniej w przypadku Galaxy 551 (z wersją 2.2), w którym opisane jest zachowanie opisane powyżej. – deefour

Odpowiedz

1

Może rozważyć inne podejście, które nie wymaga pozycjonowanie stałe ...

dodawania przewijanie do elementu ust zamiast na (domyślne) elementu nadwozia. Następnie możesz umieścić element akapitu tuż pod nagłówkiem. Zapewni to, że nagłówek będzie zawsze wyświetlany u góry strony, umożliwiając przewijanie tekstu w akapicie.

h1 { 
    height: 20px; 
} 

p { 
    position: absolute; 
    top: 20px; 
    left: 0px; 
    right: 0px; 
    bottom: 0px; 
    overflow-y: auto; 
} 
+2

To może zadziałać. Słyszałem jednak, że przewijanie jest znacznie wolniejsze podczas przewijania części dokumentu zamiast całego dokumentu. W każdym razie używam jQuery Mobile, więc nie mam zbyt dużej elastyczności w strukturze dokumentu. –

1

Myślę, że najlepszym sposobem dla Androida 2.2 przeglądarki implementacji javascript.

Możesz znaleźć więcej informacji za pośrednictwem tego linku. Chodzi o stałe pozycjonowanie we wszystkich przeglądarkach mobilnych.

http://bradfrostweb.com/blog/mobile/fixed-position/

-2

To nie Samsung Android przeglądarka złamane, to Android 2.2, który ma złamaną wsparcie. Ogólnie rzecz biorąc, jak wiadomo, pozycja: naprawiono, a w niektórych przypadkach nadal jest uszkodzona w wielu urządzeniach mobilnych/systemach.

Aby odpowiedzieć na twoje pytanie, nie ma "przełącznika ani metatagu", który "włączy działającą pozycję przeglądarki przeglądarki Android". Jeśli przeglądarka nie obsługuje czegoś, to nie ma opcji "przełączania", aby ją "przełączyć". To nie jest funkcja.

W przeciwnym razie można użyć wersji http://cubiq.org/iscroll-4, która jest naśladowana.

(edit: kilka faktów)

  1. Według http://caniuse.com/#search=position:fixed Android 2.2 i Android 2.3 nie mają częściowe i pełne wsparcie position: fixed. (częściowe wsparcie wydaje się błędne)
  2. Symulator Androida nie jest i nigdy nie będzie identyczny z macierzystą przeglądarką Android, tak jak IETester na przykład nie jest taki sam jak macierzysty komputer IE (istnieją różnice)
  3. Motorola ATRIX 4G nIE ma Android 2.2, ale Android 2.3 (http://www.motorola.com/us/consumers/MOTOROLA-ATRIX%E2%84%A2-4G/72112,en_US,pd.html?selectedTab=tab-2&cgid=mobile-phones#tab)

Jesteś sugerując, że SAMSUNG wprowadza zastrzeżonych siekać lub mod który rozkłada wsparcie inaczej roboczą pozycji ustalonej w Android przeglądarce. Wydaje się to wysoce nieprawdopodobne, niezależnie od 3 powyższych punktów.

Odpowiedź jest prosta: istnieje częściowa (błędna) obsługa, a jedynym rozwiązaniem jest użycie biblioteki javascript, która zastępuje lub "naprawia" lukę.

+0

Niepoprawnie. Mam to działa w magazynie Android 2.2 na emulatorze i na Motorola Atrix 4G. Działa w systemie Android 2.3 na Nexusie S i emulatorze Androida. Nie udaje się tylko na telefonach z modyfikacjami Samsunga. –

+0

Edytowałem mój post, aby dodać kilka faktów, aby wyprostować niektóre rzeczy. –

+0

Można zaprzeczyć, że Atrix 4G ma 2.3, ale trzymam go w ręku i jest wyraźnie 2.2. Ponadto emulator Androida uruchamia przeglądarkę Android. To nie jest jakiś symulator: emuluje całą maszynę, łącznie z procesorem. To jest prawdziwy sprzęt. caniuse.com to świetne źródło dokumentacji, ale prawdziwy kod Androida to prawdziwa dokumentacja. Google wysyła go w formie roboczej, ale na każdym telefonie SAMSUNG (tj. Jednym uruchomionym TouchWiz) jest zepsuty. Nie wiem, dlaczego kłócisz się z moimi wynikami eksperymentalnymi. –

Powiązane problemy