Я использую Jsoup для анализа веб-страницы, которая использует pnet формы.
Когда страница заканчивается, я присоединяю наблюдателя мутации в webview.loadUrl
:
var targetNode = document.getElementById('ctl00_UpdateProgressAguarde');
var config = {attributes: true};
var callback = function(mutationsList, observer) {
for(var mutation of mutationsList) {
if (mutation.attributeName == 'aria-hidden') {
if (mutation.target.attributes['aria-hidden'].value == 'true') {
window.handler.handlePage('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');
}
}
}
};
var observer = new MutationObserver(callback);
observer.observe(targetNode, config);
Это Код наблюдает за загрузочным сообщением, которое показывает, когда форма загружается и когда закончил, вызывает JavaScript Интерфейс:
@Override
public void parse(Document document) {
Element textarea = document.getElementsByTag("textarea").first();
Element table = document.getElementsByClass("txt").first().child(0);
Elements trs = table.children();
if (textarea == null) {
Log.d("Parsing", "Page");
RandomColor colors = new RandomColor();
for (int i = 2; i < trs.size() - 1; i++) {
Elements tds = trs.get(i).children();
int uid = Integer.parseInt(tds.get(1).text());
String subject = tds.get(4).text();
String sender = tds.get(5).text();
long date = getDate(tds.get(6).text());
}
}
}
Но при загрузке страницы 2 я получаю Jsoup E/Index: 59, Size: 20: java.lang.IndexOutOfBoundsException: Index: 59, Size: 20
в строке Elements tds = trs.get(i).children();
Как видите, я не изменяю значение i
, но получаю эту ошибку. Это ошибка Jsoup или WebView? Или я не вижу свою ошибку?