Mówiąc prościej: chcę ustawić aktualną pozycję (prawdopodobnie kilka pozycji) w pliku html wyświetlanym w WebView do późniejszego odtworzenia. Każda mała wskazówka może pomóc. :)Jak uzyskać pozycję dokumentu w WebView?
Odpowiedz
Jeśli przez "aktualną pozycję" rozumiesz punkt gdzieś na danej stronie, nie wierzę, że jest to możliwe ... przynajmniej nie tylko z Javy. Cały interfejs WebKit API, na który narażony jest Java, pozbawiony jest wielu elementów związanych z zawartością stron.
Jeśli masz kontrolę nad zawartością strony i istnieje sposób znać te pozycje za pośrednictwem in-page JavaScript, można:
Krok 1: Użyj WebView#addJavascriptInterface()
aby dodać obiekt z jakimś recordPosition()
metody , zapisywanie informacji w razie potrzeby
Krok # 2: Utwórz funkcję JavaScript, która wywołuje recordPosition()
na wstrzykniętym obiekcie.
a następnie:
Krok 3a: Wyzwalanie że funkcja Javascript od samego JavaScript (np na podstawie jednego kliknięcia) lub
Krok 3b: Call loadUrl("javascript:...");
na swojej WebView
, gdzie ...
jest zastąpiony przez kod Javascript, aby uruchomić funkcję JavaScript z kroku 2.
Przywracanie tych pozycji musiałoby działać w bardzo podobny sposób: wystarczy JavaScript do faktycznego przywracania, prawdopodobnie wywołanego przez kod Java.
Zauważ, że nie mam pojęcia, czy to, co chcesz (uzyskać/ustawić aktualną pozycję) jest dostępne z Javascript, ponieważ nie jestem zbyt dobrym programistą w przeglądarce.
Podejście wziąłem się następująco:
W metodzie onSaveInstanceState()
, obliczyć, jak daleko w dół strony użytkownik nie przewijane.
int contentHeight = webView.getContentHeight();
int scrollY = webView.getScrollY();
float scrollPercent = ((float) scrollY/((float) contentHeight));
Ukryj to w pakiecie. Podczas przywracania stronę w metodzie onCreate()
, poczekaj na stronę, aby zakończyć ładowanie (w WebClient.onPageFinished()
), przewiń do nagranej pozycji:
int contentHeight = webView.getContentHeight();
int y = (int) ((float) contentHeight * scrollPercent);
webView.scrollTo(0, y);
- Korzystanie z
float
i obliczania wskaźnika działa w przypadku przerzucanie między krajobraz i portret. - Może pracować wystarczająco dobrze, ale nie idealnie po zmieszaniu z autorezjowaniem obrazów.
- Skala może być również brana pod uwagę. Mam tendencję do przechowania skali w preferencji w metodzie
onPause()
, a następniewebView.setInitialScale(scale)
przed rozpoczęciem ładowania strony. - Znalazłem, że ustawienie widoku WWW na niewidoczny, gdy
scrollPercent > 0
wygląda lepiej.
- 1. przeglądarka porównuje pozycję dokumentu
- 2. Jak uzyskać pozycję textcursora w QWebView Edytowalny
- 3. Jak uzyskać pozycję kliknięcia?
- 4. Jak uzyskać pozycję okna?
- 5. Jak uzyskać aktualną pozycję karetki?
- 6. Zdobądź aktualną pozycję okna w stosunku do treści dokumentu
- 7. Jak uzyskać pozycję elementu potomnego
- 8. Jak uzyskać właściwą pozycję elementu?
- 9. Jak uzyskać wybrany tekst w WebView Android
- 10. Lucene: jak uzyskać wynik dokumentu
- 11. Jak uzyskać poprzednią pozycję w powtórzeniu ng?
- 12. Jak uzyskać pozycję kursora w obszarze tekstowym?
- 13. Jak uzyskać pozycję klucza w tablicy
- 14. Jak uzyskać pozycję elementu w interfejsie UIWebView?
- 15. Jak uzyskać pozycję kursora w zaćmieniu TextEditor
- 16. Jak uzyskać aktualną pozycję obrazu w jQuery?
- 17. jak uzyskać pozycję kliknięcia w onClickListener?
- 18. Jak uzyskać pozycję podglądu w CAShapeLayer?
- 19. Jak uzyskać pozycję myszy względem rzutni okna w javascript?
- 20. onMouseMove uzyskać pozycję myszy
- 21. uzyskać pozycję kursora terminalowego
- 22. ListView uzyskać pozycję przewijania?
- 23. Jak uzyskać aktualną pozycję dziecka ViewFlippera
- 24. Umbraco uzyskać pozycję słownika według języka, jak?
- 25. Jak uzyskać pozycję myszy nad określoną formantem?
- 26. Jak uzyskać aktualną pozycję kursora ekranowego?
- 27. Jak uzyskać pozycję aktualnie aktywnego wejścia?
- 28. Jak uzyskać zawartość strony internetowej z WebView?
- 29. uzyskać dokładną pozycję tekstu z obrazu w tesseract
- 30. Jak uzyskać globalną/światową pozycję obiektu podrzędnego?
Niesamowita odpowiedź! Wielkie dzięki. Powiązane pytanie: http://stackoverflow.com/questions/1091048/alternatives-to-window-scrollmaxy – yanchenko