0
class MyJavaScriptInterface
{
@SuppressWarnings("unused")
public void processHTML(String html)
{
// process html
}
}
final WebView browser = (WebView)findViewById(R.id.browser);
browser.getSettings().setJavaScriptEnabled(true);
browser.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
browser.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url)
{
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
browser.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
}, 2000);
}
});
browser.loadUrl("someurl");
我想要實現的是僅當頁面上加載了所有JavaScript(通常在發生onPageFinished後的2-3秒)時才調用processHTML方法。Android:加載所有腳本後從頁面抓取HTML
我發現粗魯的解決方案是使用延遲處理程序,但我會問是否有方法知道何時加載所有腳本。
我可以循環該處理程序,直到我找不到我想要的信息,但它似乎不是一個優雅的解決方案。