Следующий трюк для получения HTML-содержимого страницы после рендеринга javascript работает довольно хорошо, если поместить его в onNewPicture()
из WebView
'* PictureListener
:
browser.loadUrl("javascript:window.HTMLOUT.showHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
Однако по какой-то причине он работает только при первой загрузке страницы. То есть первый такой WebView.loadUrl()
вызов приложения получает полностью визуализированную версию страницы.
После этого, если я перезагружу / обновлю страницу (тот же точный URL), вывод HTMLOUT.showHTML()
будет выглядеть как исходный HTML + javascript до отображения страницы.
Странно то, что визуально , на самом WebView
, все содержимое есть! (хотя и после значительной задержки ... Я вижу, как вращаются песочные часы WebView, может быть, для повторной обработки Javascript требуется слишком много времени?)
Похоже, это указывает либо на проблему инициализации (в моем коде), на ошибку в WebView, либо на некоторый принцип кэширования, который хорошо известен опытным веб-программистам, но с которым я еще не знаком.
Но тогда становится еще интереснее: последующие вызовы WebView.loadUrl()
приводят к вышеупомянутому сбою многократно (3-10) раз, пока ... страница чудесным образом не будет полностью обработана снова! (а затем снова несколько сбоев и т. д.)
Что может указывать на проблемы со временем?
Любое предложение о том, как отладить или устранить неисправность?