Перезагрузка страницы (Webview.loadUrl) приводит к тому, что JavaScript не обрабатывается (полностью) - PullRequest
1 голос
/ 02 июня 2011

Следующий трюк для получения 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) раз, пока ... страница чудесным образом не будет полностью обработана снова! (а затем снова несколько сбоев и т. д.)

Что может указывать на проблемы со временем?

Любое предложение о том, как отладить или устранить неисправность?

1 Ответ

1 голос
/ 30 сентября 2011

Вы должны добавить JavaScript после загрузки страницы! Взял меня навсегда, чтобы понять это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...