Вот необходимые шаги:
- Загрузите локальный HTML-файл с помощью WebView.loadUrl().
- Этот локальный файл html имеет несколько методов javascript, которые изменяют страницу. Например, добавить изображение или изменить размер текста.
- Вызовите один из этих методов, используя WebView.loadUrl("javascript:somefunction()");
Это прекрасно работает. Изменения хорошо видны.
Однако, если страница прокручивается во время вызова, происходит что-то действительно странное. Вызывается javascript, и, глядя на ведение журнала, DOM изменяется, и на этом уровне все прошло так, как ожидалось. Однако WebView не показывает обновление. Если вы затем сделаете что-то, чтобы заставить его перерисовать себя, например, поверните устройство или снова вызовите один из методов javascript (но на этот раз без прокрутки), предыдущие изменения, наконец, появятся.
Таким образом, кажется, что есть какая-то странная ошибка, когда изменения на странице с помощью javascript не обновляются в пользовательском интерфейсе WebView, если в то время страница была затронута или прокручена.
Это действительно воспроизводимо на Nexus One 2.2, и мы видели это на других устройствах. Кто-нибудь знает, что здесь происходит? Есть ли недействительный метод, который заставляет перерисовывать веб-контент?
Спасибо.